gpt4 book ai didi

vb.net - VB .NET 中是否有 splat 运算符?

转载 作者:行者123 更新时间:2023-12-02 08:44:50 32 4
gpt4 key购买 nike

我主要是一名 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

最佳答案

有点!首先,如果这对您来说更方便,您也可以反其道而行之。它们被称为参数数组:

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

所以这些是等价的:

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

但如果你真的想要一个 splat-ish 的东西,那就是委托(delegate):

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

deleg.DynamicInvoke(reader)

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

Private Delegate Sub WayTooManyArgumentsDelegate(<i>match arguments here</i>)

Dim deleg As New WayTooManyArgumentsDelegate(AddressOf MyFunction)

关于vb.net - VB .NET 中是否有 splat 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13244389/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com