C#如何使用词典引用其他词典?
根据我在其他地方读到的内容,一般建议是使用字典动态访问变量/对象和其他字典。。。然而,我似乎错过了一些简单的最后一个案例,因为我不知道如何让这项工作。基本上,我有多个数据字典,我希望使用变量中的值指向适当的字典并读取其数据:C#如何使用词典引用其他词典?,c#,dictionary,C#,Dictionary,根据我在其他地方读到的内容,一般建议是使用字典动态访问变量/对象和其他字典。。。然而,我似乎错过了一些简单的最后一个案例,因为我不知道如何让这项工作。基本上,我有多个数据字典,我希望使用变量中的值指向适当的字典并读取其数据: //---------------------------------------------------------------------------------------- // reference dictionary - pass LangID string
//----------------------------------------------------------------------------------------
// reference dictionary - pass LangID string to reference appropriate dictionary
public static Dictionary<string, dynamic> myDictionaries = new Dictionary<string, dynamic>()
{
{ "EN", "EN_Dictionary" },
{ "FR", "FR_Dictionary" },
{ "DE", "DE_Dictionary" }
};
//----------------------------------------------------------------------------------------
public static Dictionary<string, string> EN_Dictionary = new Dictionary<string, string>()
// EN language dictionary
{
{ "str1", "Some text in EN" },
{ "str2", "Some text in EN" },
{ "str3", "Some text in EN" }
};
//----------------------------------------------------------------------------------------
public static Dictionary<string, string> FR_Dictionary = new Dictionary<string, string>()
// FR language dictionary
{
{ "str1", "Some text in FR" },
{ "str2", "Some text in FR" },
{ "str3", "Some text in FR" }
};
//----------------------------------------------------------------------------------------
public static Dictionary<string, string> DE_Dictionary = new Dictionary<string, string>()
// DE language dictionary
{
{ "str1", "Some text in DE" },
{ "str2", "Some text in DE" },
{ "str3", "Some text in DE" }
};
//----------------------------------------------------------------------------------------
LangID = "DE";
//----------------------------------------------------------------------------------------
//引用字典-将LangID字符串传递给引用适当的字典
公共静态字典MyDictionary=新字典()
{
{“EN”,“EN_字典”},
{“FR”,“FR_字典”},
{“DE”,“DE_字典”}
};
//----------------------------------------------------------------------------------------
公共静态字典EN_Dictionary=新字典()
//英语词典
{
{“str1”,“英语中的一些文本”},
{“str2”,“英语中的一些文本”},
{“str3”,“英语中的某些文本”}
};
//----------------------------------------------------------------------------------------
公共静态字典FR\u Dictionary=新字典()
//FR语言词典
{
{“str1”,“FR中的某些文本”},
{“str2”,“FR中的某些文本”},
{“str3”,“FR中的某些文本”}
};
//----------------------------------------------------------------------------------------
公共静态字典DE_Dictionary=新字典()
//DE语言词典
{
{“str1”,“DE”中的一些文本},
{“str2”,“DE”中的一些文本},
{“str3”,“DE中的某些文本”}
};
//----------------------------------------------------------------------------------------
LangID=“DE”;
//。。。但是现在我该怎么办呢?你是在问如何使用字典吗?其内容如下:
var text = myDictionaries["EN"]["str1"];
您需要这样定义词典:
public static Dictionary<string, string> EN_Dictionary = ...etc;
public static Dictionary<string, string> FR_Dictionary = ...etc;
public static Dictionary<string, string> DE_Dictionary = ...etc;
public static Dictionary<string, Dictionary<string, string>> myDictionaries
= new Dictionary<string, Dictionary<string, string>>()
{
{ "EN", EN_Dictionary },
{ "FR", FR_Dictionary },
{ "DE", DE_Dictionary }
};
公共静态字典EN_Dictionary=…等;
公共静态字典FR_Dictionary=…等;
公共静态字典deu Dictionary=…等;
公共静态字典MyDictionary
=新字典()
{
{“EN”,EN_字典},
{“FR”,FR_Dictionary},
{“DE”,DE_Dictionary}
};
您可以使用字典字典。例如:
Dictionary<String, Dictionary<String, String>>
字典
密钥和数据的类型可能根据您的需要而有所不同 我将动态更改为语言词典的实际定义,然后添加变量而不是字符串
// reference dictionary - pass LangID string to reference appropriate dictionary
public static Dictionary<string, Dictionary<string, string>> myDictionaries = new Dictionary<string, Dictionary<string, string>>()
{
{ "EN", EN_Dictionary },
{ "FR", FR_Dictionary },
{ "DE", DE_Dictionary }
};
public static Dictionary<string, string> EN_Dictionary = new Dictionary<string, string>()
{
{ "str1", "Some text in EN" },
{ "str2", "Some text in EN" },
{ "str3", "Some text in EN" }
};
public static Dictionary<string, string> FR_Dictionary = new Dictionary<string, string>()
// FR language dictionary
{
{ "str1", "Some text in FR" },
{ "str2", "Some text in FR" },
{ "str3", "Some text in FR" }
};
public static Dictionary<string, string> DE_Dictionary = new Dictionary<string, string>()
// DE language dictionary
{
{ "str1", "Some text in DE" },
{ "str2", "Some text in DE" },
{ "str3", "Some text in DE" }
};
//引用字典-将LangID字符串传递给引用适当的字典
公共静态字典MyDictionary=新字典()
{
{“EN”,EN_字典},
{“FR”,FR_Dictionary},
{“DE”,DE_Dictionary}
};
公共静态字典EN_Dictionary=新字典()
{
{“str1”,“英语中的一些文本”},
{“str2”,“英语中的一些文本”},
{“str3”,“英语中的某些文本”}
};
公共静态字典FR\u Dictionary=新字典()
//FR语言词典
{
{“str1”,“FR中的某些文本”},
{“str2”,“FR中的某些文本”},
{“str3”,“FR中的某些文本”}
};
公共静态字典DE_Dictionary=新字典()
//DE语言词典
{
{“str1”,“DE”中的一些文本},
{“str2”,“DE”中的一些文本},
{“str3”,“DE中的某些文本”}
};
要使用参考词典
private void button1_Click(object sender, EventArgs e)
{
string LangID = "DE";
Dictionary<string, string> GermanDictionary = myDictionaries[LangID];
string PhraseID = "str2";
string GermanPhrase = GermanDictionary[PhraseID];
}
private void按钮1\u单击(对象发送者,事件参数e)
{
字符串LangID=“DE”;
Dictionary GermanDictionary=MyDictionary[LangID];
字符串短语id=“str2”;
字符串GermanPhrase=GermanDictionary[PhraseID];
}
如果有不相交的键,则不需要在此处进行两级嵌套。例如dest1
和FRstr1
等-键是两个字符串的串联-语言代码和实际键。更改顺序。把字典中的字典定义为最后一件事。那么你就可以参考已经定义好的字典和下面的答案了。谢谢你的反馈-这里有一个“但是”的问题-如果我想把字典的名字作为对另一段代码的引用怎么办;我怎么能用它来动态地提供对语言词典的引用呢?我真的不确定在这种情况下,动态是什么意思。也许最好再问一个问题谢谢-这些都很有帮助。