.net 如何定义一个List< int,string>?

xlpyo6sf  于 2023-08-08  发布在  .NET
关注(0)|答案(9)|浏览(148)

我需要一个两列列表,如:

List<int,string> mylist= new List<int,string>();

字符串
它说
使用泛型类型System.collection.generic.List<T>需要1个类型参数。

8aqjt8rx

8aqjt8rx1#

根据您的需求,您有几个选择。
如果你不需要进行键/值查找,并且想坚持使用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);

xe55xuns

xe55xuns2#

你可以使用一个immutablestruct

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"));

wixjitnu

wixjitnu3#

使用C# 7(VS 2017及以上版本)的新ValueTuple,有一个新的解决方案:

List<(int,string)> mylist= new List<(int,string)>();

字符串
这将创建一个ValueTuple类型的列表。如果你的目标是.NET Framework 4.7+或.NET/.NET Core,它是本机的,否则你必须获得ValueTuple package from nuget
它是一个与Tuple相反的结构体,Tuple是一个类。与Tuple类相比,它还有一个优点,就是可以创建一个命名元组,如下所示:

var mylist = new List<(int myInt, string myString)>();


这样,您就可以访问mylist[0].myIntmylist[0].myString

qvk1mo1f

qvk1mo1f4#

由于您的示例使用了一个通用的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);
}

字符串

gkn4icbw

gkn4icbw5#

使用C#字典的数据结构对你有好处…

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#字典的更多示例... C# Dictionary
纳维

u2nhd7ah

u2nhd7ah6#

不确定您的具体情况,但您有三种选择:
1.)使用字典<..,..>
2.)创建一个 Package 类来 Package 你的值,然后你就可以使用List了
3.)使用元组

mqkwyuun

mqkwyuun7#

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]);
}

字符串

rqqzpn5f

rqqzpn5f8#

为此,您可以使用Dictionary,其中int是密钥。

new Dictionary<int, string>();

字符串
如果你真的想使用一个列表,它可以是一个List<Tuple<int,string>>(),但是Tuple类是只读的,所以你必须重新创建示例来修改它。

siv3szwd

siv3szwd9#

实现这种事情的常用方法是使用模型类并在模型类中创建属性。

public class YourClassName
{
 //your properties
 public Type Name { get; set; }
 public Type Name { get; set; }
 //and so on
}

字符串
并使用此类模型创建此模型的列表:

public List<YourClassName> ListName { get; set; }

相关问题