Есть ли что-то вроде списка(многомерный общий список) - PullRequest
7 голосов
/ 08 июня 2010

Мне нужно что-то похожее на List<String, Int32, Int32>. Список поддерживает только один тип за раз, а Словарь только два за один раз. Есть ли чистый способ сделать что-то подобное (многомерный общий список / коллекция)?

Ответы [ 4 ]

14 голосов
/ 08 июня 2010

Лучший способ - создать для него контейнер, т.е. класс

public class Container
{
    public int int1 { get; set; }
    public int int2 { get; set; }
    public string string1 { get; set; }
}

тогда в коде где это нужно

List<Container> myContainer = new List<Container>();
13 голосов
/ 08 июня 2010

В .NET 4 вы можете использовать List<Tuple<String, Int32, Int32>>.

1 голос
/ 08 июня 2010

Ну, вы не можете делать это до 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));

Если вам интересно, зачем создавать неизменяемые структуры - оформить заказ здесь .

0 голосов
/ 08 июня 2010

Исходя из вашего комментария, звучит так, как будто вам нужна структура с двумя целыми числами, хранящимися в словаре со строковым ключом.

struct MyStruct
{
   int MyFirstInt;
   int MySecondInt;
}

...

Dictionary<string, MyStruct> dictionary = ...
...