c#, Как я могу определить словарь, который содержит различные типы?

Если имеют следующий код. Где Вы видите XXX, я хотел бы вставить массив типа долго [].

Как я могу сделать это и как я выбрал бы значения из словаря? Я просто использую defaultAmbience["CountryId"] [0] для получения первого элемента?

public static Dictionary<string, object> defaultAmbience = new Dictionary<string, object>
{
    { "UserId", "99999" },
    { "CountryId", XXX },
    { "NameDefaultText", "nametext" },
    { "NameCulture", "it-IT" },
    { "NameText", "namelangtext" },
    { "DescriptionDefaultText", "desctext" },
    { "DescriptionCulture", "it-IT" },
    { "DescriptionText", "desclangtext" },
    { "CheckInUsed", "" }
};
10
задан Yuval Itzchakov 16 March 2016 в 09:13
поделиться

3 ответа

Первое:

Если вы не знаете тип значения ИЛИ ключ , то не используйте Общий словарь.

.NET Generics лучше всего подходят, когда вы заранее знаете типы. .NET также предоставляет полный набор коллекций для использования, когда вы хотите хранить «смешанный пакет» объектов разных типов.

В этом случае эквивалентом словаря будет HashTable .

Просмотрите пространство имен System.Collections (а не System.Collections.Generic), чтобы увидеть остальные параметры, которые у вас есть.

Если вы знаете тип ключа, значит, вы делаете правильный выбор.

Во-вторых:

Когда вы получаете значение ... вам нужно будет вернуть объект к его исходному типу:

long[] countryIds = (long[]) defaultAmbience["CountryId"];

или

// To get the first value
long id = ((long[])defaultAmbience["CountryId"])[0];
8
ответ дан 4 December 2019 в 00:59
поделиться

Вам нужно предоставить каст, где вы его вызываете.

((long[])defaultAmbience["countryID"])[0];
2
ответ дан 4 December 2019 в 00:59
поделиться

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

((long[])defaultAmbience["CountryId"])[0]
1
ответ дан 4 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: