2008-11-09 11 views

Antwort

10

Solange Sie nicht in einem anderen Thread sind, ist das Codebeispiel gültig. Ein Textfeld (oder andere Windows Forms-Elemente) sind immer noch Objekte, die an Methoden übergeben und von diesen manipuliert werden können.

+0

Vielen Dank für sie und Ihre schnelle Antwort zu klären. –

8

Yup, das wird funktionieren. Sie übergeben kein Objekt, sondern geben eine Referenz an das Objekt weiter.

Einzelheiten zu Pass-by-Ref und Pass-by-Value finden Sie unter "Parameter passing in C#".

+0

Vielen Dank für die Korrektur meines Verständnisses für die Verwendung der Begriffe. Ihre Antwort und "Informationsreferenzen" werden ebenfalls sehr geschätzt. –

+0

Link zu "Parameterübergabe in C#" nicht mehr gültig. –

+0

@ CarolinaJay65: Jetzt behoben. Aus irgendeinem Grund hat pobox.com meine URL-Weiterleitung verloren ... –

4

Für jeden Referenztyp ist das in Ordnung - Sie haben die Referenz an das Objekt übergeben, aber es gibt nur ein Objekt, so dass Änderungen für den Aufrufer sichtbar sind.

Die Hauptzeit, die nicht funktioniert Arbeit ist für "Strukturen" (Werttypen) - aber sie sollten wirklich nicht veränderbar sein sowieso (d. H. Sie sollten nicht wirklich bearbeitbare Eigenschaften haben).

Wenn Sie notwendig, um dies mit einer Struktur zu tun, könnten Sie hinzufügen „ref“ - das heißt

public void MyFunction(ref MyMutableStruct whatever) 
{ 
    whatever.Value = "Hi."; // but avoid mutable structs in the first place! 
} 
+0

Warum sollten Strukturen nicht veränderbar sein? Sind sie nicht nur eine leichtere Version von Klassen? – DOK

+0

@DOK: Nein, sie sind komplett anders. Sie verhalten sich sehr unterschiedlich, und wenn Sie Strukturen veränderlich machen, werden Sie * Probleme bekommen. Sag einfach nein. –

+0

Strukturen werden als Werttypen und nicht als Objektverweise behandelt. Das Übergeben einer Struktur ist wie das Übergeben eines int. Jede Änderung, die Sie an der Ganzzahl vornehmen, wird die Methode nicht verlassen. – Greg

Verwandte Themen