用C#2.0中的值初始化字典
本文关键字:初始化 字典 C#2 | 更新日期: 2023-09-27 18:24:03
在C#2.0中,我们可以用以下值初始化数组和列表:
int[] a = { 0, 1, 2, 3 };
int[,] b = { { 0, 1 }, { 1, 2 }, { 2, 3 } };
List<int> c = new List<int>(new int[] { 0, 1, 2, 3 });
我想对Dictionary也这样做。我知道你可以很容易地在C#3.0以后这样做:
Dictionary<int, int> d = new Dictionary<int, int> { { 0, 1 }, { 1, 2 }, { 2, 3 } };
但它在C#2.0中不起作用。在不使用Add
或基于现有集合的情况下,有没有解决方法?
但它在C#2.0中不起作用。在不使用Add或基于现有集合的情况下,有没有解决方法?
没有。我能想到的最接近的方法是编写自己的DictionaryBuilder
类型,使其更简单:
public class DictionaryBuilder<TKey, TValue>
{
private Dictionary<TKey, TValue> dictionary
= new Dictionary<TKey, TValue> dictionary();
public DictionaryBuilder<TKey, TValue> Add(TKey key, TValue value)
{
if (dictionary == null)
{
throw new InvalidOperationException("Can't add after building");
}
dictionary.Add(key, value);
return this;
}
public Dictionary<TKey, TValue> Build()
{
Dictionary<TKey, TValue> ret = dictionary;
dictionary = null;
return ret;
}
}
然后你可以使用:
Dictionary<string, int> x = new DictionaryBuilder<string, int>()
.Add("Foo", 10)
.Add("Bar", 20)
.Build();
这至少是一个单个表达式静态,对于要在声明点初始化的字段非常有用。