2015-08-01 3 views
2

я в настоящее время, имеющие этот код:Список с 2 аргументами

List<int> list = new List<int>(); 
list.Add(0); 
list.Add(1); 
list.Add(2); 
list.Add(3); 
color0 = list[1]; 
color1 = list[2]; 
color2 = list[3]; 
color3 = list[4]; 

Есть ли возможный путь, этот список может принимать 2 аргумента в 1 элемент? Я имею в виду:

List<int,int> list = new List<int,int>(); 
list.Add(0,3); 
list.Add(1,8); 
color0=list[1][2]; //output 3 
color1=list[1][1]; //output 0 
color2=list[2][2]; //output 8 
color3=list[2][1]; //output 1 

Возможно ли, что я могу достичь чего-то подобного?

ответ

2

Вы можете использовать Tuple:

var list = new List<Tuple<int, int>>(); 
list.Add(new Tuple<int, int>(1, 2)); 

Для облегчения использования можно создать метод расширения:

public static class Extensions 
{ 
    public static void Add(this List<Tuple<int, int>> list, int x, int y) 
    { 
     list.Add(new Tuple<int, int>(x, y)); 
    } 
} 

Затем вы можете добавить элемент, используя этот код:

list.Add(1, 2); 

Для доступа к пунктам:

var listItem = list[0]; // first item of list 
int value = listItem.Item2; // second "column" of the item 
+1

..и доступ к нему как 'color3 = list [7] .Item1;' – TaW

0

Вы можете пойти со словарем также, если у вас есть ключевое значение пары:

static void Main() 
    { 
    Dictionary<int, int> dictionary = 
     new Dictionary<int, int>(); 

    dictionary.Add(0,3); 
    dictionary.Add(1,8); 
    dictionary.Add(2, 13); 
    dictionary.Add(3, -1); 
    } 
0

Похоже, что вы пытаетесь использовать список как матрицу. В этом случае вы можете найти Math.NET полезным.

Смежные вопросы