2016-07-06 6 views
-4

Ich habe ein Wörterbuch Objekt in meinem C# -Code: dictEmployees; --->C# out-Parameter und Wörterbuch

Es eine Liste aller Employees.Employee Klasse hat zwei Eigenschaften ... Id und Salary.Lets sagen wir, zunächst diese Sammlung ein Gehalt von 50K für Mitarbeiter Id 1.

Employee employee = new Employee(); 
dictEmployees.TryGetValue(1, out employee); 

Jetzt hat, wenn ich in anderen einige Verfahren Mitarbeiters Gehalt ändern, ich sehe, dass das Gehalt auch in der Mitarbeiter Objekt reflektiert wird in das Wörterbuch. Wird das bitte erwartet?

Danke.

+1

Ja, wenn 'Employee' ein * reference * type ist, dh es wurde wie' class Employee ... 'deklariert –

+2

http://stackoverflow.com/questions/5057267/what-is-the-difference- zwischen-einer-Referenz-Typ-und-Wert-Typ-in-c – DVK

Antwort

1

Ja, weil Employee der Referenztyp ist und wenn Sie den Referenztyp übergeben, wird nur die Referenz übergeben. Wenn Ihre Methode also einige Änderungen an dem Objekt vornimmt, wird es im Original reflektiert. Wenn Sie jedoch den Werttyp übergeben, wird die Kopie des Werts übergeben und die Änderung des Werts spiegelt nicht den ursprünglichen Wert wider.