Hat VB.NET ein direktes Äquivalent zu C # out
-Funktionsparametern, bei denen die an eine Funktion übergebene Variable nicht initialisiert werden muss?
vb.net
c#-to-vb.net
out-parameters
cspolton
quelle
quelle
Object
, daher kann sie nicht für einenByRef x As Integer
Parameter verwendet werden).ByRef
Parameter übergeben werden. (Es passiert nicht mit Werttyp-Parametern.)Nothing
wenn Sie ihnen zuweisen , wird die Warnung entfernt, obwohl das Ergebnis dadurch nicht geändert wird.Nothing
sie bisher zugewiesen . Es ist nur zeitaufwändig, da ich es hunderte Male auf einer großen Legacy-Website tun muss. Vielen Dank für die Untersuchung.Out
Attribut nicht dem C # -Schlüsselwort entsprichtout
.Nein, es gibt kein Äquivalent Konstrukt , das ein nicht-initialisierte Variable ermöglicht , ohne eine Warnung an eine Methode übergeben werden, aber, wie es in meiner erwähnten Frage und Antwort ein Angabe
<Out()>
Attribut auf einerByRef
Parameterdefinition, obwohl VB ignoriert, wird behandelt von C # alsout
Parameter.Daher würde ich Referenzvariablen vorinitialisieren
Nothing
und angeben<Out()> ByRef
, um die Absicht zu kennzeichnen (dies funktioniert, wenn C # -Benutzer jemals auf Ihre Methoden zugreifen).Wenn Sie das Gefühl haben, zu wissen, wann Sie
Nothing
in ansonsten nicht zugewiesenen Referenzvariablen auf die Standardeinstellungen zugreifen möchten , können Sie auf Projektebene (Projekteigenschaften> Kompilieren) die Option "Warnkonfiguration" "Verwendung von Variablen vor der Zuweisung" auf "Keine" setzen Sie möchten die Konfiguration auf "Alle Konfigurationen" setzen, bevor Sie diese Einstellung ändern. Sie können sie auch in VS2015 (VB.NET 14) verwenden#Disable Warning BC42030
.quelle
C # -Version
Vb.net Version
Hier finden Sie die Antwort
Aktualisieren
Wie im Kommentar angegeben, vergessen Sie nicht, Ihren Parameter zu initialisieren, der im Out-Slot verwendet wird
quelle
Ich hatte das Problem in VB.NET, dass ich eine Funktion "by ref" aufgerufen habe, die ein Array zurückgegeben hat.
Obwohl der Compiler es als Warnung markiert hat, war es in Ordnung. Das Update ist super einfach und wahrscheinlich eine gute Programmierpraxis.
ich habe mich verändert
zu
Es hilft auch beim Codieren, wenn Variablennamen beschreibend sind ...
quelle
Sie können die Referenzübergabemethode in VB.NET verwenden.
Sie benötigen den Out-Parametermechanismus in C #, da Sie damit keine Variable verwenden können, ohne sie zu initialisieren.
VB.NET benötigt kein spezielles Schlüsselwort, da es dies automatisch selbst tut.
Verwenden Sie einfach ByRef.
quelle
VB hat das Attribut, das mit C # out identisch sein sollte, aber heute erhalten Sie immer noch eine Warnung, selbst wenn Sie es verwenden. Es gibt Details zum Reparieren im vblang-Bereich von Github. https://github.com/dotnet/vblang/issues/67 .
quelle
Verwenden Sie das Schlüsselwort ByRef vor der Variablen.
quelle
ByRef
entsprichtref
Parametern in C #, die initialisiert werden müssen, bevor sie an eine Funktion übergeben werden.