c#如何定义包含不同类型的字典?

如果有以下代码。 你在哪里看到XXX我想放入long []类型的数组。

我该怎么做?如何从字典中获取值? 我只是使用defaultAmbience [“CountryId”] [0]来获取第一个元素吗?

public static Dictionary defaultAmbience = new Dictionary { { "UserId", "99999" }, { "CountryId", XXX }, { "NameDefaultText", "nametext" }, { "NameCulture", "it-IT" }, { "NameText", "namelangtext" }, { "DescriptionDefaultText", "desctext" }, { "DescriptionCulture", "it-IT" }, { "DescriptionText", "desclangtext" }, { "CheckInUsed", "" } }; 

首先:

如果您不知道值或键的类型 ,则不要使用通用字典。

.NET Generics最适合您提前知道类型的情况。 .NET还提供了一整套集合,供您在需要存储不同类型对象的“混合包”时使用。

在这种情况下,Dictionary的等价物将是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]