c# - 使用键值对作为参数

标签 c# shorthand

简单。如果我使用:

public void Add(params int[] values)

然后我可以将其用作:

Add(1, 2, 3, 4);

但现在我正在处理键值对!我有一个 KeyValue 类将整数链接到字符串值。所以我开始:

public void Add(params KeyValue[] values)

但是我不能用这个:

Add(1, "A", 2, "B", 3, "C", 4, "D");

相反,我不得不使用:

Add(new KeyValue(1, "A"), new KeyValue(2, "B"), new KeyValue(3, "C"), new KeyValue(4, "D"));

呃……我已经不喜欢这个了……

因此,现在我使用不带 params 修饰符的 Add 函数,并将预定义的数组传递给该函数。因为它只是用于测试的快速初始化,所以我对需要这个额外的代码并不太担心,尽管我想让代码简单易读。我很想知道使用我无法使用的方法的技巧,但是有没有什么方法可以在不使用“new KeyValue()”结构的情况下做到这一点?

最佳答案

如果您接受了 IDictionary<int,string> ,您大概可以使用(至少在 C# 3.0 中):

Add(new Dictionary<int,string> {
     {1, "A"}, {2, "B"}, {3, "C"}, {4, "D"}
});

有什么用吗?

示例 Add :

static void Add(IDictionary<int, string> data) {
    foreach (var pair in data) {
        Console.WriteLine(pair.Key + " = " + pair.Value);
    }
}

关于c# - 使用键值对作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1362302/

相关文章:

c# - memberwiseclone 是否复制 DateTime,还是必须明确设置?

java - Vaadin 如何使用 AbstractField.FocusShortcut 中的速记符号将 &Address 转换为 Alt+A?

具有多个属性的 CSS 转换速记?

Javascript速记

c# - c#的无锁哈希表

c# - 如何将 IsActiveAsync 失败信息传递给用户和客户端?

c# - LoadContent 在 AndroidGameActivity 中运行时的启动/加载屏幕

c# - lock() 语句会阻塞进程/应用程序域中的所有线程吗?

java - 有什么办法可以让这个更加紧凑吗?

java - 简写赋值运算符,+=,真正的意思?