Если имеют следующий код. Где Вы видите 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", "" }
};
Первое:
Если вы не знаете тип значения ИЛИ ключ , то не используйте Общий словарь.
.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];
Вам нужно предоставить каст, где вы его вызываете.
((long[])defaultAmbience["countryID"])[0];
В этом случае C # на самом деле не знает, какой тип вы ожидаете получить, поэтому вам нужно привести к правильному типу после того, как вы возьмете его из словаря и перед тем, как его использовать . В случае этого длинного массива это будет:
((long[])defaultAmbience["CountryId"])[0]