我试图了解 c# 扩展方法的行为,并发现以下内容:
下面是类 Program 的扩展方法,它有一个名为 SeeIt 的字段。
public static void Prod(this Program p)
{
Console.WriteLine("i am in ext- pro" );
p = new Program(); // look out for this line (call this line as #@2)
p.SeeIt = 100;
}
现在当我这样调用这个方法时:
var pr = new Program();
pr.SeeIt = 200;
pr.Prod();
COnsole.WriteLine(pr.SeeIt);
我看到以下内容:
- 当我在扩展方法中注释#@2 行时,结果来自扩展方法,即 100。
- 当我保留第 #@2 行时,结果为 200。
我想知道 :
- 我在扩展方法中说 p = new Program() 到底发生了什么?