C# 有一个很棒的 params
用于将任意数量的参数传递给函数的关键字,例如 String.Format()
。但是如果我需要传递命名参数(键值对)怎么办?最好的方法是什么(我正在寻找调用方的简短语法)?
-
func(new Dictionary<string, object> { { "param1", val1 }, { "param2", val2 } }
太麻烦了 -
func(param1 => val1, param2 => val2)
和func(new { param1 = val1, param2 = val2 })
但看起来像是语言滥用,这些功能不应该这样使用 - 于
dynamic
我可以解析可选参数名称func(param1: val1, param2: val2)
的对象这看起来是一个很好的解决方案,但不适用于常见的对象方法
最佳答案
您可以创建一些函数重载。当调用方只有 1 或 2 个参数时,这些重载将封装 Dictionary 的使用
public void Foo (string paramA, object valueA)
{
this.Foo(new Dictionary<string, object> { { paramA, valueA } });
}
public void Foo (string paramA, object valueA, string paramB, object valueB)
{
this.Foo(new Dictionary<string, object> { { paramA, valueA },{ paramB, valueB } });
}
public void Foo (Dictionary<string, object> args)
{
}
关于c# - 如何为方法创建命名 `params` 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28740075/