.NET在Python中是否有**kwargs的等价物?

s3fp2yjn  于 2023-02-06  发布在  .NET
关注(0)|答案(1)|浏览(108)

我还没能通过常规渠道找到这个问题的答案。
在Python中,我可以使用以下函数定义

def do_the_needful(**kwargs):
    # Kwargs is now a dictionary
    # i.e. do_the_needful(spam=42, snake='like eggs', spanish='inquisition')
    # would produce {'spam': 42, 'snake': 'like eggs', 'spanish': 'inquisition' }

我知道.NET有ParamArray,它产生一系列未命名的参数,类似于Python中的*args语法........NET有**kwargs的等价物吗?

qzlgjiam

qzlgjiam1#

因此,不幸的是,没有办法在C#中模拟Python **kwargs,在这个过程中你总是会丢失参数名(见下面@alelom的注解)。
但是,看起来你要找的是一个变元函数,如果你想知道如何在各种编程语言中实现它,最好是看看Wikipedia page
因此,根据Wikipedia,在C#和VisualBasic中实现可变参数函数是这样完成的:
其他语言,如C#、VB.net和Java使用不同的方法--它们只允许将相同(超)类型的可变数量的参数传递给变量函数,在方法内部,它们只是被收集在一个数组中。

C#示例

public static void PrintSpaced(params Object[] objects)
{
    foreach (Object o in objects)
        Console.Write(o + " "); 
}    
// Can be used to print: PrintSpaced(1, 2, "three");

VB.Net示例

Public Shared Sub PrintSpaced(ParamArray objects As Object())
    For Each o As Object In objects
        Console.Write(o & " ")
    Next
End Sub

'可用于打印:打印间距(1、2、3英寸)

相关问题