2

私は主に Python 開発者ですが、残念ながら VB .NET でクライアント用の GUI ベースのプログラムを書かなければなりません。私は VB の特徴のほとんどを自分で理解することができましたが、この単純なイディオムを VB に翻訳する方法を見つけることができませんでした。

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

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

私は多くの変数を持ついくつかの厄介な関数を扱っています。そのようなことを行うことができれば、コードはずっと良くなり、読みやすくなるので、私は立ち往生していません

MyFunction(reader(0), reader(1), reader(2), reader(3)) 'ad infinum
4

1 に答える 1

6

みたいな!まず、その方が便利な場合は、逆のこともできます。それらはパラメーター配列と呼ばれます。

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

したがって、これらは同等です:

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

しかし、本当にスプラットっぽいものが欲しいなら、それはデリゲートです:

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

deleg.DynamicInvoke(reader)

Action必要に応じてorが見つからない場合はFunc、一致するように独自のデリゲート タイプを定義する必要があります。

Private Delegate Sub WayTooManyArgumentsDelegate(match arguments here)

Dim deleg As New WayTooManyArgumentsDelegate(AddressOf MyFunction)
于 2012-11-06T04:31:36.943 に答える