Подтвердить что ты не робот

Определить список, например List <int, string>?

Мне нужен список из двух столбцов, например:

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

говорится

используя общий тип System.collection.generic.List<T>, требуется 1 аргумент типа.

4b9b3361

Ответ 1

Вы можете использовать неизменяемый struct

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

Или a KeyValuePair<int, string>

using Data = System.Collections.Generic.KeyValuePair<int, string>
...
var list = new List<Data>();
list.Add(new Data(12345, "56789"));

Ответ 2

В зависимости от ваших потребностей у вас есть несколько вариантов.

Если вам не нужно делать поиск ключей/значений и вы хотите придерживаться 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);

Ответ 3

Так как ваш пример использует общий List, я предполагаю, что вам не нужен индекс или уникальное ограничение на ваши данные. A 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);
}

Ответ 4

Не уверен в вашем конкретном сценарии, но у вас есть три варианта:

1.) использовать Словарь <..,.. >
2.) создайте класс-оболочку вокруг своих значений, а затем вы можете использовать List
3.) использовать Tuple

Ответ 5

С новым ValueTuple с С# 7 (VS 2017 и выше) появляется новое решение:

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

Создает список типа ValueTuple. Если вы настроили таргетинг на .Net 4.7, он является родным, иначе вам нужно получить пакет ValueTuple из nuget (nuget.org/packages/System.ValueTuple).

Ответ 6

Для этого вы можете использовать Dictionary, где ключ int - это ключ.

new Dictionary<int, string>();

Если вы действительно хотите использовать список, это может быть класс List<Tuple<int,string>>(), но класс Tuple доступен только для чтения, поэтому вам нужно воссоздать экземпляр для его модификации.

Ответ 7

Используйте С# Dictionary datastructure, это хорошо для вас...

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

В качестве примера можно использовать словарь С#... Словарь С#

Navi.

Ответ 8

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