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)

如果您找不到ActionorFunc来满足您的需求,那么您需要定义自己的委托类型以匹配:

Private Delegate Sub WayTooManyArgumentsDelegate(match arguments here)

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