Мне нужен список из двух столбцов, например:
List<int,string> mylist= new List<int,string>();
говорится
используя общий тип
System.collection.generic.List<T>
, требуется 1 аргумент типа.
Мне нужен список из двух столбцов, например:
List<int,string> mylist= new List<int,string>();
говорится
используя общий тип
System.collection.generic.List<T>
, требуется 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"));
В зависимости от ваших потребностей у вас есть несколько вариантов.
Если вам не нужно делать поиск ключей/значений и вы хотите придерживаться 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);
Так как ваш пример использует общий 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);
}
Не уверен в вашем конкретном сценарии, но у вас есть три варианта:
1.) использовать Словарь <..,.. >
2.) создайте класс-оболочку вокруг своих значений, а затем вы можете использовать List
3.) использовать Tuple
С новым ValueTuple с С# 7 (VS 2017 и выше) появляется новое решение:
List<(int,string)> mylist= new List<(int,string)>();
Создает список типа ValueTuple. Если вы настроили таргетинг на .Net 4.7, он является родным, иначе вам нужно получить пакет ValueTuple из nuget (nuget.org/packages/System.ValueTuple).
Для этого вы можете использовать Dictionary
, где ключ int
- это ключ.
new Dictionary<int, string>();
Если вы действительно хотите использовать список, это может быть класс List<Tuple<int,string>>()
, но класс Tuple
доступен только для чтения, поэтому вам нужно воссоздать экземпляр для его модификации.
Используйте С# 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.
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]);
}