C# 扩展方法取代了C中的标准方法#
有几种方法可以使用带有标准方法签名的扩展方法作为扩展(而不显式地调用静态类)?例如:C# 扩展方法取代了C中的标准方法#,c#,static,extension-methods,C#,Static,Extension Methods,有几种方法可以使用带有标准方法签名的扩展方法作为扩展(而不显式地调用静态类)?例如: public class Foo { public override string ToString() { return "Own"; } } public static class ExtensionsMethods { public static string ToString(this Foo foo) { return "Ext
public class Foo
{
public override string ToString()
{
return "Own";
}
}
public static class ExtensionsMethods
{
public static string ToString(this Foo foo)
{
return "Extensions";
}
}
class Program
{
static void Main()
{
var foo = new Foo();
Console.WriteLine(foo.ToString()); // "Own" will be printed
}
}
我是否可以使用扩展-
ToString
version而不显式地调用classExtensionsMethods
不,您不能这样做。如果具有相同签名的方法可用,则不使用扩展方法:
可以使用扩展方法扩展类或接口,但不能使用
来覆盖它们。具有相同名称和签名的扩展方法
作为接口或类,永远不会调用方法
有关详细信息,请参阅
您可能会选择继承或a作为替代解决方案。无意冒犯,但您可以不问而回答此问题。查看扩展方法msdn文档。如果存在具有相同签名的另一个方法,则无论发生什么情况,都不会调用它,直到可以调用现有方法为止。扩展方法在被调用时获得的优先级最低。