c# – 为什么扩展方法表现不同?

发布时间:2020-01-05 发布网站:大佬教程
大佬教程收集整理的这篇文章主要介绍了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节)明确指出实例方法优先于扩展方法:

如果实例方法与传递的参数匹配,则甚至不考虑扩展方法.

大佬总结

以上是大佬教程为你收集整理的c# – 为什么扩展方法表现不同?全部内容,希望文章能够帮你解决c# – 为什么扩展方法表现不同?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ群:277859234,请注明来意。