c# - 在 C# 中创建常量字典

标签 c# .net collections dictionary constants

创建stringint常量(在运行时永不改变)映射的最有效方法是什么?

我试过使用 const Dictionary ,但这没有成功。

我可以实现 immutable wrapper具有适当的语义,但这似乎仍然不完全正确。


对于那些提出问题的人,我正在实现 IDataErrorInfo在生成的类中,我正在寻找一种方法来将 columnName 查找到我的描述符数组中。

我不知道(测试时打字错误!d'oh!)switch 接受字符串,所以这就是我要使用的。谢谢!

最佳答案

在 C# 中创建真正的编译时生成的常量字典并不是一项简单的任务。实际上,这里没有一个答案真正实现了这一点。

有一种解决方案可以满足您的要求,但不一定是好的解决方案;请记住,根据 C# 规范,switch-case 表被编译为常量哈希跳转表。也就是说,它们是常量字典,而不是一系列 if-else 语句。所以考虑这样一个 switch-case 语句:

switch (myString)
{
   case "cat": return 0;
   case "dog": return 1;
   case "elephant": return 3;
}

这正是您想要的。是的,我知道,这很丑。

关于c# - 在 C# 中创建常量字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268084/

相关文章:

optimization - 在 Smalltalk 中使用其他集合选择对象的最快方法

c# - MonoTouch 对话框部分中的纯文本?

java - Android - java - 如何通过 GregorianCalendar 参数对对象列表进行排序

c# - 创建的动态按钮单击事件 OnPreRender 不会触发

c# - 如何使用C#套接字发送内存流?

用于导入 .dll 的 C# 包装器, "Attempted to read or write protected memory"

c# - 如何将 List<Tuple<string, int>> 转换为 string[]?

c# - 优化字典键的内存要求

c# - centos 8 上构建 docker 错误 :Encryption(ssl/tls) handshake failed

c# - 在 C# 中舍入远离 0 的数字