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 {...}'包装器.