Tun sie? Oder um mein Programm zu beschleunigen, sollte ich sie als Referenz übergeben?
Tun sie? Oder um mein Programm zu beschleunigen, sollte ich sie als Referenz übergeben?
Antworten:
Die Referenz wird als Wert übergeben .
Arrays in .NET sind Objekte auf dem Heap, sodass Sie eine Referenz haben. Diese Referenz wird als Wert übergeben, was bedeutet, dass Änderungen am Inhalt des Arrays vom Aufrufer gesehen werden, eine Neuzuweisung des Arrays jedoch nicht:
void Foo(int[] data) {
data[0] = 1; // caller sees this
}
void Bar(int[] data) {
data = new int[20]; // but not this
}
Wenn Sie den ref
Modifikator hinzufügen , wird die Referenz als Referenz übergeben - und der Anrufer würde sehen, dass sich beide oben ändern.
Ja, sie werden standardmäßig in C # als Referenz übergeben. Alle Objekte in C # sind außer den Werttypen. Um ein bisschen genauer zu sein, werden sie "als Referenz nach Wert" übergeben; Das heißt, der Wert der Variablen, die Sie in Ihren Methoden sehen, verweist auf das ursprünglich übergebene Objekt. Dies ist ein kleiner semantischer Punkt, der jedoch manchmal wichtig sein kann.