Ich habe versucht, das Verhalten von Erweiterungsmethoden von C# und fand unten, was zu verstehen:Verwirrende Verhalten von Erweiterungsmethode mit neuer Objekterstellung in Methode
Im Folgenden finden Sie Erweiterungsmethode auf Klasse-Programm, das SeeIT genannt ein Feld hat.
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;
}
Nun, wenn ich rufe diese Methode wie folgt aus:
var pr = new Program();
pr.SeeIt = 200;
pr.Prod();
COnsole.WriteLine(pr.SeeIt);
ich unten Dinge sehen:
- Wenn ich # @ 2 Zeile in Erweiterungsmethode kommentieren, ist das Ergebnis von Erweiterungsmethode dh 100.
- Wenn ich Linie # @ 2 Zeile, Ergebnis ist 200.
Ich möchte wissen:
- Was genau mit i p = new Program() in Verlängerung Methode sagen, es geschieht?
Haben Sie versucht, den Debugger-Fluss vor dem Posten dieser Frage – joshua
Es gibt nicht viel im Code zu debuggen. – Rupal
Dann nehme ich an, Sie wissen nicht über die Nachricht – joshua