Создать словарь с массивами в качестве значений - PullRequest
14 голосов
/ 01 апреля 2012

Я пытаюсь инициализировать словарь со строковыми элементами в качестве ключей и элементами int [] в качестве значений следующим образом:

System.Collections.Generic.Dictionary<string,int[]> myDictionary;
myDictionary = new Dictionary<string,int[]>{{"length",{1,1}},{"width",{1,1}}};

Но отладчик продолжает говорить: «Неожиданный символ« {»».

Не могли бы вы сказать, что не так с приведенным выше кодом?

Спасибо!

Ответы [ 5 ]

9 голосов
/ 01 апреля 2012

Я не уверен в c #, но в Java работает, например:

вместо

{1,1}

попробовать

new int[]{1,1}

или

new[]{1,1}
6 голосов
/ 01 апреля 2012

Ниже приведены два примера, которые работают.Второй пример работает только внутри метода.Первый пример будет работать внутри метода или вне метода в классе.

В исходном коде отсутствовал () для нового оператора Dictionary (), что, вероятно, и привело к ошибке "{" в символическом символеТребуется также "новый Int []"

class SomeClass
{
    Dictionary<string, int[]> myDictionary = new Dictionary<string, int[]>()
    {
        {"length", new int[] {1,1} },
        {"width", new int[] {1,1} },
    };

    public void SomeMethod()
    {
        Dictionary<string, int[]> myDictionary2;
        myDictionary2 = new Dictionary<string, int[]>()
        {
            {"length", new int[] {1,1} },
            {"width", new int[] {1,1} },
        };

    }
}
4 голосов
/ 01 апреля 2012

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

System.Collections.Generic.Dictionary<string, int[]> myDictionary;
myDictionary = new Dictionary<string, int[]> {{"length", new int[]{1,2}},{ "width",new int[]{3,4}}};
4 голосов
/ 01 апреля 2012
System.Collections.Generic.Dictionary<string,int[]> myDictionary;
        myDictionary = new Dictionary<string, int[]> { { "length", new int[] { 1, 1 } }, { "width", new int[] { 1, 1 } } };
2 голосов
/ 01 апреля 2012

В дополнение ко всем хорошим ответам вы также можете попробовать это.

Dictionary<string, List<int>> dict = new Dictionary<string, List<int>>();

Если возможно, предпочитайте List <> массивам, так как изменение размеров в массивах затруднительно.Вы не можете удалить элемент из массива.Но элемент может быть удален из списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...