Есть ли что-то вроде List<String, Int32, Int32> (многомерный общий список)
Мне нужно что-то похожее на List<String, Int32, Int32>
, Список поддерживает только один тип за раз, а Словарь только два за один раз. Есть ли чистый способ сделать что-то подобное выше (многомерный общий список / коллекция)?
4 ответа
Лучший способ - создать для него контейнер, то есть класс.
public class Container
{
public int int1 { get; set; }
public int int2 { get; set; }
public string string1 { get; set; }
}
тогда в коде, где это нужно
List<Container> myContainer = new List<Container>();
В.NET 4 вы можете использовать List<Tuple<String, Int32, Int32>>
,
Ну, вы не можете делать это до C# 3.0, используйте Tuples, если вы можете использовать C# 4.0, как упоминалось в других ответах.
Однако в C# 3.0 - создать Immutable structure
и оберните все типы в структуру и передайте тип структуры в качестве аргумента универсального типа в ваш список.
public struct Container
{
public string String1 { get; private set; }
public int Int1 { get; private set; }
public int Int2 { get; private set; }
public Container(string string1, int int1, int int2)
: this()
{
this.String1 = string1;
this.Int1 = int1;
this.Int2 = int2;
}
}
//Client code
IList<Container> myList = new List<Container>();
myList.Add(new Container("hello world", 10, 12));
Если вам интересно, зачем создавать неизменяемые структуры - закажите здесь.
Исходя из вашего комментария, кажется, что вам нужна структура с двумя целыми числами, хранящимися в словаре со строковым ключом.
struct MyStruct
{
int MyFirstInt;
int MySecondInt;
}
...
Dictionary<string, MyStruct> dictionary = ...