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

标签 c# dictionary types

如果有如下代码。在你看到 XXX 的地方,我想放入一个 long[] 类型的数组。

我该怎么做以及如何从字典中获取值?我是否只使用 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 泛型最适合您提前知道类型的情况。 .NET 还提供了一整套集合,供您存储不同类型对象的“混合包”时使用。

在这种情况下,Dictionary 的等价物是 HashTable .

查看 System.Collections (而不是 System.Collections.Generic)命名空间以查看您拥有的其余选项。

如果您知道 key 的类型,那么您正在做的就是正确的方法。

其次:

当您检索值时...您需要将对象转换回其原始类型:

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

// To get the first value
long id = ((long[])defaultAmbience["CountryId"])[0];

关于c# 如何定义包含不同类型的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3086199/

相关文章:

Java 泛型和模板

c# - 如何使用带有两个构造函数的viewmodel的Unity框架显示子窗口?

c# - 使用 wpf 检测窗口上任何位置的文本框

ios - 如何快速从字典中获取所有索引值?

types - 有没有办法创建只接受一系列值的数据类型?

typescript - 在 Typescript 中定义函数类型、函数接口(interface)

c# - 我如何解决错误 "The Process Cannot access the file because it is being used by another process"

c# - 从 Intranet C# Windows 应用程序中的计算机名称获取 IP

C++ Multimap 插入函数

python - 如果两个值相同,则在 Python 中从嵌套字典中删除重复条目