Frage

Wie ich es verstehe, geht C # Parameter in Methoden Bezug genommen wird. In VB.NET, können Sie dies mit ByVal und ByRef angeben. Der Standardwert ist ByVal.

Ist dies für die Kompatibilität mit Visual Basic 6.0, oder ist es nur zufällig? Auch, wie kann ich angeben, was in C # verwenden? Ich mag die Idee der Parameter als Wert übergeben.

War es hilfreich?

Lösung

Parameter in C # sind, von default von Wert übergeben. Es gibt keinen Modifikator dies explizit zu machen, aber wenn Sie fügen ref / out den Parameter ist durch Verweis.

Die übliche Verwirrung hier ist der Unterschied zwischen:

  • Wert-Typ von Wert vorbei (Änderungen auf den Wert-Typ sind mit dem Anrufer nicht sichtbar, aber wert Typen sollten idealerweise unveränderlich sowieso)
  • Wert-Typen durch Bezugnahme vorbei (Änderungen auf den Wert-Typ sind für die Anrufer, aber wert Typen sollten idealerweise unveränderlich ohnehin sein - so wichtig ich es zweimal sagen würde; p)
  • Sie als Referenz durch Wert (Änderungen Felder / Eigenschaften der ref-Typ sind sichtbar an den Anrufer, aber Umhängen der Schiedsrichter-Typ in einen neuen / anderen Objekt ist nicht sichtbar)
  • Sie als Referenz durch Verweis (Änderungen an Feldern / Eigenschaften, und Neuzuweisung der Verweis auf den Anrufer sichtbar sind)

Andere Tipps

nach Wert Passing ist der Standard in C #. Wenn jedoch die Variable des Referenztyps übergeben wird, dann sind vorbei Sie die Hinweis von Wert. Dies ist vielleicht der Ursprung Ihrer Verwirrung.

Grundsätzlich, wenn Sie einen Verweis nach Wert übergeben, dann können Sie das Objekt ändern bezieht er sich auf und diese Änderungen werden außerhalb des Verfahrens bestehen, aber man kann nicht variabel auf ein anderes Objekt verweisen lassen und hat diese Änderung bestehen bleiben außerhalb der Verfahren.

Parameter in C # bestanden "ByVal" eingestellt. Sie haben „ref“ oder „out“ angeben, wenn Sie ein anderes Verhalten wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top