私はc#の拡張メソッドの動作を理解しようとしていて、以下のものを見つけました:
以下は、SeeItと呼ばれる1つのフィールドを持つクラスProgramの拡張メソッドです。
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になります。
私は知りたいです :
- Extensionメソッドのp=new Program()と言うと、そこで何が起こっているのでしょうか。