我需要一个两列列表,如:
List<int,string> mylist= new List<int,string>();
它说
使用泛型类型
System.collection.generic.List<T>
需要1个类型参数。
答案 0 :(得分:59)
根据您的需要,您可以在此处选择一些选项。
如果您不需要进行键/值查找并希望坚持使用List<>
,则可以使用Tuple<int, string>
:
List<Tuple<int, string>> mylist = new List<Tuple<int, string>>();
// add an item
mylist.Add(new Tuple<int, string>(someInt, someString));
如果你做想要键/值查找,你可以转向Dictionary<int, string>
:
Dictionary<int, string> mydict = new Dictionary<int, string>();
// add an item
mydict.Add(someInt, someString);
答案 1 :(得分:39)
您可以使用不可变结构
public struct Data
{
public Data(int intValue, string strValue)
{
IntegerData = intValue;
StringData = strValue;
}
public int IntegerData { get; private set; }
public string StringData { get; private set; }
}
var list = new List<Data>();
或KeyValuePair<int, string>
using Data = System.Collections.Generic.KeyValuePair<int, string>
...
var list = new List<Data>();
list.Add(new Data(12345, "56789"));
答案 2 :(得分:19)
由于您的示例使用通用List
,因此我假设您不需要对数据建立索引或唯一约束。 List
可能包含重复值。如果您想确保使用唯一密钥,请考虑使用Dictionary<TKey, TValue>()
。
var list = new List<Tuple<int,string>>();
list.Add(Tuple.Create(1, "Andy"));
list.Add(Tuple.Create(1, "John"));
list.Add(Tuple.Create(3, "Sally"));
foreach (var item in list)
{
Console.WriteLine(item.Item1.ToString());
Console.WriteLine(item.Item2);
}
答案 3 :(得分:12)
使用C#7中的新ValueTuple
(VS 2017及以上版本),有一个新的解决方案:
List<(int,string)> mylist= new List<(int,string)>();
这会创建ValueTuple类型的列表。如果你的目标是.Net 4.7它是原生的,否则你必须得到ValueTuple package from nuget。
这是一个与Tuple
相对的结构,它是一个类。与Tuple
类相比,它还可以创建一个命名元组,如下所示:
var mylist = new List<(int myInt, string myString)>();
这样您就可以访问mylist[0].myInt
和mylist[0].myString
答案 4 :(得分:5)
不确定您的具体方案,但您有三种选择:
1。)使用Dictionary&lt; ..,..&gt;
2.)围绕您的值创建一个包装类,然后您可以使用List
3.)使用元组
答案 5 :(得分:3)
使用C#Dictionary数据结构对你有好处......
Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("one", 1);
dict.Add("two", 2);
您可以通过简单的方式从Ditionary中检索数据。
foreach (KeyValuePair<string, int> pair in dict)
{
MessageBox.Show(pair.Key.ToString ()+ " - " + pair.Value.ToString () );
}
有关使用C#Dictionary ... C# Dictionary
的更多示例导航。
答案 6 :(得分:2)
为此,您可以使用Dictionary
,其中int
是关键。
new Dictionary<int, string>();
如果你真的想使用一个列表,它可能是一个List<Tuple<int,string>>()
,但Tuple
类是只读的,所以你必须重新创建实例来修改它。
答案 7 :(得分:1)
List<Tuple<string, DateTime, string>> mylist = new List<Tuple<string, DateTime,string>>();
mylist.Add(new Tuple<string, DateTime, string>(Datei_Info.Dateiname, Datei_Info.Datum, Datei_Info.Größe));
for (int i = 0; i < mylist.Count; i++)
{
Console.WriteLine(mylist[i]);
}