c# - 从 php 到 c#:字典数组,还是字典字典?
问题描述
我是编程新手。我有这个 php 代码,它基本上用于翻译 txt 文件中的一些句子:
$LANG = array();
$LANG['en'] = array(
11 => "Name",
20 => "Surname",
21 => "Age",
22 => "Profession",
);
$LANG['es'] = array(
11 => "Nombre",
20 => "Apellido",
21 => "Edad",
22 => "Profesión",
);
我正在尝试在 c# 中做同样的事情,如下所示:
Dictionary<int, string>[] LANG = new Dictionary<int, string>[]
{
new Dictionary<int, string>(),
LANG['en']=new Dictionary<int, string>()
{
{11, "Name"},
{20, "Surname"},
{21, "Age"},
{22, "Profession"}
},
LANG['es']=new Dictionary<int, string>()
{
{11, "Nombre"},
{20, "Apellido"},
{21, "Edad"},
{22, "Profesión"}
}
};
1)这个c#做的和php代码完全一样吗?我应该做一个字典数组,还是应该做一个字典字典?
2) 对于LANG['en']
and LANG['es']
,我收到错误消息“字段初始化程序无法引用非静态字段、方法或属性‘Form1.LANG’。我做错了什么?
解决方案
是的。
PHP
等效于 in 的关联数组C#
将是Dictionary
. Array inC#
不支持非整数索引,因此您需要Dictionary
与string
key 一起使用,因此您必须使用字典字典。显然语法无效。要将您的
PHP
代码转换为C#
执行以下操作
//instantiate dictionary of dictionaries
var LANG = new Dictionary<string, Dictionary<int, string>>();
//set dictionary for "en" key
LANG["en"] = new Dictionary<int, string>()
{
{ 11, "Name" },
{ 20, "Surname" },
{ 21, "Age" },
{ 22, "Profession" }
};
//set dictionary for "es" key
LANG["es"] = new Dictionary<int, string>()
{
{ 11, "Nombre" },
{ 20, "Apellido" },
{ 21, "Edad" },
{ 22, "Profesión" }
};
以上也可以初始化为单个语句:
var LANG = new Dictionary<string, Dictionary<int, string>>
{
{ "en", new Dictionary<int, string>
{
{ 11, "Name" },
{ 20, "Surname" },
{ 21, "Age" },
{ 22, "Profession" }
}
},
{ "es", new Dictionary<int, string>
{
{ 11, "Nombre" },
{ 20, "Apellido" },
{ 21, "Edad" },
{ 22, "Profesión" }
}
}
};
C# 现在还提供了一种基于索引器的语法来初始化字典。新语法中的上述等效项如下所示:
var LANG = new Dictionary<string, Dictionary<int, string>>
{
["en"] = new Dictionary<int, string>
{
[11] = "Name",
[20] = "Surname",
[21] = "Age",
[22] = "Profession"
},
["es"] = new Dictionary<int, string>
{
[11] = "Nombre",
[20] = "Apellido",
[21] = "Edad",
[22] = "Profesión"
}
};
推荐阅读
- amazon-web-services - 使用 CLI 进行 Amazon AWS Glacier 分段上传
- javascript - 如何在 Angular wint Konva 中实现滚动缩放
- sql - 如何获取一个圆圈中的所有数据?
- java - 如何从 Java 访问受 mod_auth_openidc 代理保护的 REST API?
- python - 格式说明符缺少字符串格式的精度错误
- jenkins - 有没有可能让我的本地机器作为主/从机来访问詹金斯自己而不依赖于任何其他机器
- java - Serialize flat object to nested JSON structure
- android - 新的 crashlytics (com.google.firebase.crashlytics.FirebaseCrashlytics) 不再适用于非 Google Play 设备?
- python - 如何使用 If 获得我想要的输出?
- javascript - 在新的嵌套对象 javascript 中保存具有附加属性的对象