我需要一个两列列表,例如:
List<int,string> mylist= new List<int,string>();
它说
使用泛型类型
System.collection.generic.List<T>
需要 1 个类型参数。
根据您的需要,您有几个选择。
如果您不需要进行键/值查找并想坚持使用 a 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);
您可以使用不可变结构
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"));
使用ValueTuple
C# 7(VS 2017 及更高版本)的新版本,有一个新的解决方案:
List<(int,string)> mylist= new List<(int,string)>();
这会创建一个ValueTuple
类型列表。如果您的目标是 .NET Framework 4.7+ 或 .NET/.NET Core,它是本机的,否则您必须从 nuget 获取 ValueTuple 包。
它是一个反对的结构Tuple
,它是一个类。与类相比,它还具有Tuple
可以创建命名元组的优势,如下所示:
var mylist = new List<(int myInt, string myString)>();
这样你就可以访问喜欢mylist[0].myInt
和mylist[0].myString
由于您的示例使用了 generic List
,我假设您不需要对数据使用索引或唯一约束。AList
可能包含重复值。如果您想确保唯一的密钥,请考虑使用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);
}
使用 C# Dictionary 数据结构对您有好处...
Dictionary<string, int> dict = new Dictionary<string, int>();
dict.Add("one", 1);
dict.Add("two", 2);
您可以以一种简单的方式从字典中检索数据..
foreach (KeyValuePair<string, int> pair in dict)
{
MessageBox.Show(pair.Key.ToString ()+ " - " + pair.Value.ToString () );
}
有关使用 C# 字典的更多示例... C# 字典
导航。
不确定您的具体情况,但您有三个选择:
1.) 使用 Dictionary<..,..>
2.) 围绕你的值创建一个包装类,然后你可以使用 List
3.) 使用 Tuple
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]);
}
为此,您可以使用 a Dictionary
where theint
是关键。
new Dictionary<int, string>();
如果你真的想使用一个列表,它可能是一个List<Tuple<int,string>>()
但是,Tuple
类是只读的,所以你必须重新创建实例来修改它。