3

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

在 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,它会产生一系列未命名的参数,类似于*argsPython 中的语法...... .NET 是否有等价的**kwargs或类似的东西?

4

1 回答 1

5

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

因此,根据 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

' 可用于打印:PrintSpaced(1, 2, "three")

于 2013-04-24T20:12:49.687 回答