当我尝试为 File 类创建扩展方法时,我收到一条错误消息,告诉我我不能这样做,因为该类是静态的。但是,我不明白为什么这会停止创建扩展方法,这意味着什么?
谢谢
当我尝试为 File 类创建扩展方法时,我收到一条错误消息,告诉我我不能这样做,因为该类是静态的。但是,我不明白为什么这会停止创建扩展方法,这意味着什么?
谢谢
在对象的实例上调用扩展方法。
myObj.ExtensionMethod();
如果你有一个静态类,你就不能有它的实例。因此,没有什么可以调用扩展方法的。
因为设计的扩展方法必须将其扩展的类的实例作为其第一个参数。显然你不能传递 File 的实例,因为它是一个静态类并且不能有实例。
反过来说,如果您查看任何扩展方法的定义,第一个参数始终是调用它的对象的实例,由this
关键字证明。从逻辑上讲,这种行为不能在静态类上起作用,因为不存在实例。
扩展方法的示例 -请参阅第一个参数 this
public static class MyExtensions
{
public static int WordCount(this String str)
{
return str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;
}
}