Frage

Gibt es eine Möglichkeit ParamArray ByRef zu benutzen? Abgesehen davon, ist es eine Abhilfe gibt, die erfüllt die gleiche Sache?

Ich konnte einige Überlastungen tun, aber ich versuche, die clunkiness zu vermeiden.

Hintergrund:. Porting über einigen alten Code, und versucht, die gleiche Struktur, so viel wie möglich zu halten


EDIT

Ein spezielles Beispiel von dem, was ich will:

ich einige Code in turboBasic haben, dass ich vb.net bin zu portieren. Der Code hat eingebaute Funktionen wie

Input#1,Data$(I%,1),Data$(I%,2),Data$(I%,3)

Wo Input (Datei) # 1 und liest drei Stücke von Daten aus und weist sie die drei Variablen gezeigt wird. Ich möchte dieses Verhalten mit meiner eigenen Input () Funktion replizieren. Um das zu tun, wie würde ich in drei nehmen (oder mehr oder weniger) Variablen und assign Werte zu ihnen?

Im Idealfall würde ich dies erreichen, indem nur meine eigene Definition von Eingabe Modifizieren (), so dass ich in der Codebasis so wenig wie möglich Dreck kann.

War es hilfreich?

Lösung

Ich habe noch nie TurboBasic aber die Syntax sieht identisch mit dem VB6 Input # Anweisung , so vermute ich, die Semantik ist auch die gleiche.

Dieser VB6-Code

Input #1,Data$(I%,1),Data$(I%,2),Data$(I%,3)

entspricht dieser VB.Net

Input(1,Data$(I%,1))
Input(1,Data$(I%,2))
Input(1,Data$(I%,3))

Die VB.Net Upgrade Anweisung Wizard konvertiert die VB6 Input # wie diese. Ich würde nur Port der Code wie folgt, anstatt eine eigene Funktion zu implementieren. Konvertieren von VB6 zu VB.net erfordert erhebliche Änderungen in der Codebasis, würde ich erwarten, TurboBasic noch mehr zu fordern.

Andere Tipps

Wenn Sie die Parameter auf eine neue Array-Instanz zuweisen und erwarteten die Anrufer (die eine Variable oder ein Feld ist vorbei), um die neue Instanz zu sehen, die Sie nicht brauchen ByRef.

Auch ohne ByRef, wird der Anrufer nach wie vor Änderungen sieht den Inhalt des Arrays. (Arrays sind Referenztypen).

Wenn Sie nicht parameterName = something in dem Verfahren sehen, die Sie nicht brauchen ByRef.

Der Punkt eines ParamArray Parameter ist es eine implizit erstellt Array zu übergeben.
In solchen Verwendungen kann, ByRef keine Wirkung hat.

Es gibt derzeit keine Möglichkeit ParamArrays durch Bezugnahme in VB.NET zu übergeben. Um eine Reihe von vorgegebenen Werten ein Verfahren geben, die einen ParamArray annimmt, füllt das CLR ein Array von geeigneter Länge mit den Werten Sie angegeben, und dann übergibt diese Anordnung in das Methode genannt. Es gibt keine Möglichkeit, alle Werte aus dem Array zu kopieren, das übergeben wurde und wieder in die ursprünglichen Variablen.

Ich gehe davon aus, dass Sie Code aus VB6 portieren, wo die nur Weg ParamArrays passieren durch Bezugnahme, aber Sie sollten keine Notwendigkeit haben für diese Funktionalität in .NET.

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