C#中的Extension Methods
和Methods
之间有什么区别?
答案 0 :(得分:7)
我认为你真正想要的是Static and Instance Methods
之间的区别在一天结束时,扩展方法是一些不错的编译器魔术和语法糖,允许您调用静态方法,就像它是在特定类实例上定义的方法一样。但是, NOT 是一个实例方法,因为必须将该特定类的实例传递给函数。
答案 1 :(得分:4)
答案 2 :(得分:3)
扩展方法的一个非常好的功能是可以在null对象上调用它们,请参阅:
myclass x = null;
x.extension_method(); // this will work
x.method(); // this won't
遗憾的是,例如 string 的大多数方法都不是扩展方法,毕竟
x.ToLower();
如果 x 为null,应返回null。我的意思是,它会很有用。
当我需要这种空透明度时,我更喜欢编写扩展方法。