我有一个将字典作为参数的方法,如下所示:
void Do(Dictionary<string,string> d)
我想创建一个可以像字典集合初始化程序一样调用的方法,如下所示:
Do({"sadfs","sdfsa"}, {"sadda","sada"}, ...);
有人知道该怎么做吗?
你不能 - 你可以使用集合初始化器,但你必须指定类型:
Do(new Dictionary<string, string> { {"x", "y"}, {"a", "b" } });
如果字典每次都相同,并且您知道该方法不会改变它,我会将其提取到静态只读变量中,这样做的好处是您可以给它一个有意义的名称。
像这样定义你的方法
public static void TheMethod(IDictionary<string, string> d)
{
MessageBox.Show(d.Count);
// Other processing
}
并这样称呼它
public static void MyMethod(string s)
{
TheMethod("name, value");
}
如果你想传递多个参数,那么只需将定义更改为..
public static void TheMethod(ICollection<IDictionary<string, string>> d)
{
MessageBox.Show(d.Count);
// Other processing
}
public static void MyMethod(string s)
{
TheMethod("name, value", "otherName, otherValue");
}