c# – 为什么扩展方法表现不同?
派生类包含一个“计数”方法,它对类“派生”执行一些操作.另一方面,我有一个扩展方法,它也是“派生”类的目标.
Derived derived = new Derived(); derived.Count(); 通过调用上面的代码片段将在派生类中执行“Count”方法.为什么C#编译器在这种情况下不会警告并识别扩展方法.框架内部如何处理这个? //Base class public class Base { public virtual string Count() { return string.Empty; } } //Derived class public class Derived : Base { public override string Count() { return base.Count(); } } //Extension Methods for Derived class public static class ExtensionMethods { public static Derived Count(this Derived value) { return new Derived(); } } 解决方法
规范(第7.6.5.2节)明确指出实例方法优先于扩展方法:
如果实例方法与传递的参数匹配,则甚至不考虑扩展方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |