You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#方法重写指南:如何将Search改为虚方法重写并保持原有搜索逻辑

实现方案

你需要先把原有静态Search方法改为实例级别的虚方法(静态方法无法标记为virtual),再在两个派生类中重写即可,修改后逻辑和原有功能完全一致,具体实现如下:

using System;
using System.Collections.Generic;

namespace _3._1
{
    class Program {
        static void Main(){
            List<Message> messages = new List<Message>();

            messages.Add(new SmsMessage {text = "Hello!"});
            messages.Add(new SmsMessage {text = "What?"});
            messages.Add(new SmsMessage {text = "You?"});
            
            messages.Add(new EmailMessage {text = "Show"});
            messages.Add(new EmailMessage {text = "You!"});
            messages.Add(new EmailMessage {text = "Hello!"});


            string query = Console.ReadLine();
            int i = 0;
            foreach(Message str in messages){
                // 改为调用实例的Search方法
                if(str.Search(query)){
                    i++;
                }
            }
            Console.WriteLine($"query: {query} | coincidences: {i}");
        }
    }
    class Message {
        public string text { get; set; }
        // 改为实例虚方法,去掉static修饰符,添加virtual标记
        public virtual bool Search(string query){
            return text.Contains(query);
        }
    }
    class SmsMessage : Message {
        public string phone;
        // 重写虚方法,逻辑和基类保持一致
        public override bool Search(string query){
            return text.Contains(query);
        }
    }
    class EmailMessage : Message {
        public string email;
        public string subject;
        // 重写虚方法,逻辑和基类保持一致
        public override bool Search(string query){
            return text.Contains(query);
        }
    }
}

核心修改说明

  • 移除了Search方法的static修饰符,添加virtual关键字,方法逻辑改为直接访问当前实例的text属性进行匹配,不需要再额外传入Message实例参数
  • 在SmsMessage和EmailMessage类中添加override修饰的Search方法,匹配逻辑和基类完全一致,保证搜索结果和修改前没有差异
  • 调整了Main方法中的调用方式,从静态类调用改为实例方法调用

内容的提问来源于stack exchange,提问作者Thrackerzod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:36:04