允许相同密钥的通用集合

Elm*_*lmo 6 .net c# vb.net collections

集合喜欢HashTableDictionary不允许使用相同的键添加值,但我想在a中使用相同的键存储相同的值Collection<int,string>.

是否有内置的集合让我这样做?

Ree*_*sey 10

您可以使用List<T>包含自定义类,甚至是List<Tuple<int,string>>.

List<Tuple<int,string>> values = new List<Tuple<int,string>>();

values.Add(Tuple.Create(23, "Foo"));
values.Add(Tuple.Create(23, "Bar"));
Run Code Online (Sandbox Code Playgroud)

或者,您可以创建一个Dictionary<int, List<string>>(或其他一些字符串集合),并以这种方式填充值.

Dictionary<int, List<string>> dict = new Dictionary<int, List<string>>();
dict.Add(23, new List<string> { "Foo", "Bar" });
Run Code Online (Sandbox Code Playgroud)

这具有仍然通过密钥提供快速查找的优点,同时允许每个密钥具有多个值.但是,稍后添加值有点棘手.如果使用这个,我将封装在方法中添加值,即:

void Add(int key, string value)
{
    List<string> values;
    if (!dict.TryGetValue(key, out values))
    {
        values = new List<string>();
        dict[key] = values;
    }

    values.Add(value);
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*ych 5

List与自定义一起使用Class

public class MyClass
{
    public int MyInt { get; set; }
    public string MyString { get; set; }
}

List<MyClass> myList = new List<MyClass>();
myList.Add(new MyClass { MyInt = 1, MyString = "string" });
Run Code Online (Sandbox Code Playgroud)