根据Microsoft的说法,“扩展方法是一种特殊的静态方法,但它们被称为扩展类型的实例方法”。
有没有办法添加一个它调用的扩展方法,就好像它是一个静态方法?或者做一些具有相同效果的其他事情?
编辑: 我的意思是“就像它是扩展类上的静态方法一样”。 抱歉模棱两可。
答案 0 :(得分:13)
根据Microsoft的说法,“扩展方法是一种特殊的静态方法,但它们被称为扩展类型的实例方法”。
是的,扩展方法是静态方法。它们都可以作为静态方法以正常方式调用,作为它们“扩展”类型的扩展实例方法,甚至可以作为空引用的扩展方法调用它们。
例如:
public static class Extensions {
public static bool IsNullOrEmpty(this string theString) {
return string.IsNullOrEmpty(theString);
}
}
// Code elsewhere.
string test = null;
Console.WriteLine(test.IsNullOrEmpty()); // Valid code.
Console.WriteLine(Extensions.IsNullOrEmpty(test)); // Valid code.
修改强>
有没有办法添加一个它调用的扩展方法,就好像它是一个静态方法?
你的意思是你想要打电话,例如string.MyExtensionMethod()?在这种情况下,不,没有办法做到这一点。
答案 1 :(得分:4)
扩展方法是静态方法。你不需要做任何事情。
唯一可以将扩展方法与任何其他静态方法区分开来的方法是,它可以被调用,就好像它是一个实例方法另外,通常被称为静态方法。