ich einen Code zu lesen, die mir irgend Linie zu stoppen gemacht:Warum wird die Übergabe einer Zeichenfolge an eine Methode ungleich der Liste <object>, wenn beide Referenztypen sind?
List<object> props = new List<object>();
DoWork(param1, param2, props);
//props.Count grew up
Ich dachte, dass eine Variable nicht in ihren Geltungsbereich zu ändern bedarf es als out
oder ref
vorbei, aber dann merkte ich, dass es sei denn, die DoWork
Verfahren Änderungen die props
Referenz wie:
props = new List<object>();
die Referenz wird auf die gleiche Stelle sein. Es ist also nicht notwendig, ref
hier zu verwenden.
und dann habe ich eine Methode für string
Typ:
static void ChangeMe(string str)
{
str = "W77";
}
public static void Main(string[] args)
{
string str = "p1";
ChangeMe(str);
//str is still "p1"
}
Wenn das Verhalten der Liste motiviert den Anwendungsbereich dieser Richtlinie geändert werden soll, dass es Referenzart, warum string
ändert sich nicht, wenn es nicht umverteilt ist in die aufgerufene Methode und es ist ein Referenztyp wie List<object>
?