【发布时间】:2012-04-13 05:32:22
【问题描述】:
我试图了解 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() 到底发生了什么?
【问题讨论】:
-
您在发布此问题之前是否尝试过调试器流程
-
调试的代码不多..
-
那我假设你不知道消息传递
标签: c# extension-methods