3

我有一个将字典作为参数的方法,如下所示:

void Do(Dictionary<string,string> d)

我想创建一个可以像字典集合初始化程序一样调用的方法,如下所示:

Do({"sadfs","sdfsa"}, {"sadda","sada"}, ...);

有人知道该怎么做吗?

4

2 回答 2

5

你不能 - 你可以使用集合初始化器,但你必须指定类型:

Do(new Dictionary<string, string> { {"x", "y"}, {"a", "b" } });

如果字典每次都相同,并且您知道该方法不会改变它,我会将其提取到静态只读变量中,这样做的好处是您可以给它一个有意义的名称。

于 2012-09-04T13:32:21.697 回答
0

像这样定义你的方法

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");
    }
于 2012-09-04T13:44:41.007 回答