/ / Gibt es einen Splat-Operator in VB .NET? - vb.net

Gibt es einen Splat-Operator in VB .NET? - vb.net

Ich bin hauptsächlich ein Python-Entwickler, aber ich binLeider muss in VB .NET ein GUI-basiertes Programm für einen Client erstellt werden. Ich habe die meisten Eigenheiten von VB selbst herausgefunden, aber ich hatte kein Glück, einen Weg zu finden, um diese einfache Sprache in VB zu übersetzen:

def my_function(arg1, arg2, arg3):
# do stuff with args
pass

args = [1,2,3]
my_function(*args)

Ich beschäftige mich mit einigen unangenehmen Funktionen mit vielen Variablen, und der Code wäre viel schöner und lesbarer, wenn ich so etwas tun könnte, also bin ich nicht dabei

MyFunction(reader(0), reader(1), reader(2), reader(3)) "ad infinum

Antworten:

6 für die Antwort № 1

Art von! Erstens, wenn es Ihnen bequemer wird, können Sie das Gegenteil tun. Sie werden Parameter-Arrays genannt:

Sub MyFunction(ParamArray things() As Whatever)
" Do something with things
End Sub

Das sind also gleichwertig:

MyFunction(reader(0), reader(1), reader(2), reader(3), ...)
MyFunction(reader)

Aber wenn Sie wirklich ein plattes Ding wollen, dann sind dies Delegierte:

Dim deleg As New Action(Of YourTypeA, YourTypeB)(AddressOf MyFunction)

deleg.DynamicInvoke(reader)

Wenn Sie keinen finden können Action oder Func Um Ihren Bedürfnissen gerecht zu werden, müssen Sie Ihren eigenen Delegatentyp definieren:

Private Delegate Sub WayTooManyArgumentsDelegate(match arguments here)

und

Dim deleg As New WayTooManyArgumentsDelegate(AddressOf MyFunction)