我可以传递任意数量的命名参数来在C#中运行吗?

src*_*091 6 c# function named-parameters

**kwargs在C#中是否存在某种类似Python的东西?我希望能够将可变数量的命名参数传递给functon,然后将它们作为类似于字典的内部函数并循环遍历它们.

Raw*_*ing 12

C#中没有任何内容可以让您传递任意命名参数.

你可以通过添加一个Dictionary<string, object>参数来接近,它允许你做类似但需要构造函数的东西,"参数名称"是字符串和一些额外的大括号:

static void Method(int normalParam, Dictionary<string, object> kwargs = null)
{
   ...
}

Method(5, new Dictionary<String, object>{{ "One", 1 }, { "Two", 2 }});
Run Code Online (Sandbox Code Playgroud)

你可以通过使用更接近ObjectToDictionaryRegistry位置,它可以让你在一个匿名对象不要求您命名一个字典类型,传递参数的名称作为字符串或增加相当多那么多的括号传:

static void Method(int normalParam, object kwargs = null)
{
    Dictionary<string, object> args = ObjectToDictionaryRegistry(kwargs);
    ...
}

Method(5, new { One = 1, Two = 2 });
Run Code Online (Sandbox Code Playgroud)

但是,这涉及动态代码生成,因此会在性能方面降低成本.

在语法方面,我怀疑你是否能够摆脱这个需要的`new {...}'包装器.