2016-02-28 2 views
1

Я пытаюсь построить простое приложение, и главное - использовать словарь. Я буду иметь данные, как это в моем словаре:Как создать еще 2 аргумента в словаре?

(ключ, номер, номер, номер, номер)

Так ниже мой код, который реализует свои данные.

Dictionary<string,int,int,int,int> states = new Dictionary<string,int,int,int,int>(); 

Я рассмотрел множество источников, как их решить, но я не смог его найти. Я получаю сообщение об ошибке, которое должно иметь два аргумента.

Можете ли вы дать мне решение сделать словарь может содержать более двух аргументов?

+0

Почему бы не создать класс, который содержит 4 числа? –

+0

Я думаю, что это сложно реализовать в моем логическом приложении, я пробовал это, я получал много застрявших, поэтому вместо этого я пытаюсь использовать словарь – ridwan

ответ

2

Вы можете создать класс для хранения 4 номера, как это:

public class MyData 
{ 
    public int Number1 {get;set;} 
    public int Number2 {get;set;} 
    public int Number3 {get;set;} 
    public int Number4 {get;set;} 
} 

И использовать его в качестве словаря типа значения, как это:

Dictionary<string,MyData> states = new Dictionary<string,MyDate>(); 

Вот пример кода, который добавляет пункт словарь:

states.Add("my_key", new MyData { Number1 = 1, Number2 = 2, Number3 = 3, Number4 = 4}); 

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

MyData data = states["my_key"]; 

int number1 = data.Number1; 
//... 

Чтобы перебрать все данные, вы можете использовать простой foreach так:

foreach(var kvp in states) 
{ 
    var key = kvp.Key; 

    var data = kvp.Value; 

    var number1 = data.Number1; 
    //... 
} 

Другой альтернативой для MyData бы быть Tuple класса. Но иметь собственный тип, вероятно, лучше, потому что у вас могут быть свои собственные имена для 4-х свойств номера.

+0

, так что теперь, как я могу перебирать все свои данные и как я могу получить доступ мои данные, которые имеют ключ: my_key: – ridwan

+0

@ridwan, см. мое обновление –

+0

Вы можете использовать тип 'Tuple <...>' вместо специального класса, такого как 'MyData'. Например, 'Tuple ' в вашем случае. Там вы можете получить доступ к значениям через 'Item1',' Item2' и так далее. Самый простой способ создать экземпляр - это статический 'Tuple.Create'-метод – Koopakiller

0

Если имена последних четырех целых чисел не имеет значения, вы можете использовать

Dictionary<string, List<int>> 

К таким образом, вы можете получить список Int с ключом строки, а затем перечислить список.

ИЛИ вы можете пойти с любым типом массива, такого как

Dictionary<string, int[]> 
Смежные вопросы