c#中密封类的扩展方法
我有这个sealed
课,
public sealed class A { public string AName {get;set;} }
有人可以这样写一个扩展方法:
public static class Extensions { public static void ExtensionMethodForA (this A a) { Console.WriteLine("A's Extension method!"); } }
问题是,你如何防止这种情况?
你没有。 你不能。 你不应该这样做。
实例方法始终优先于扩展方法,因此不应出现冲突。 除此之外,它们仅仅是语法/便利。 不要试图让来电者生活不便。
您可能会对术语“扩展方法”感到困惑。 它不是类中的方法,甚至不是派生类; 这是一种类型的操作。 它无法访问类层次结构的私有,受保护或内部成员,因此该类仍然是密封的。
所以,你不能也不需要。
没有意义。 任何用户仍然可以创建一个静态类,该类实现了一个使用类类型的方法。
他们只是从声明中省略’this’,调用者必须显式传递对象,而不是使用更简单的对象。 句法。 最终结果是相同的。
扩展方法只是表达我刚才描述的更好的方式,无论如何总是可行的。
上述就是C#学习教程:c#中密封类的扩展方法分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/956501.html