.NET在Python中是否具有相同的** kwargs?

时间:2013-04-24 20:07:08

标签: python .net equivalent

我无法通过典型渠道找到这个问题的答案。

在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,或类似的东西?

1 个答案:

答案 0 :(得分:4)

您要查找的内容称为可变参数函数。如果您想知道如何在各种编程语言中实现它,最好是查看Wikipedia page有关它的信息。

所以,根据维基百科的说法,在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
     

'可用于打印:PrintSpaced(1,2,“三”)