我对扩展方法的工作原理有点困惑。
如果我读得正确,那么根据http://msdn.microsoft.com/en-us/library/bb383977.aspx 和 这里的解释,以下代码应该输出“Instance”,但实际上输出的是“Extension method”。
如果我读得正确,那么根据http://msdn.microsoft.com/en-us/library/bb383977.aspx 和 这里的解释,以下代码应该输出“Instance”,但实际上输出的是“Extension method”。
interface IFoo
{
}
class Foo : IFoo
{
public void Say()
{
Console.WriteLine("Instance");
}
}
static class FooExts
{
public static void Say(this IFoo foo)
{
Console.WriteLine("Extension method");
}
}
class Program
{
static void Main(string[] args)
{
IFoo foo = new Foo();
foo.Say();
}
}
非常感谢帮助澄清此行为。