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
等-键是两个字符串的串联-语言代码和实际键。更改顺序。把字典中的字典定义为最后一件事。那么你就可以参考已经定义好的字典和下面的答案了。谢谢你的反馈-这里有一个“但是”的问题-如果我想把字典的名字作为对另一段代码的引用怎么办;我怎么能用它来动态地提供对语言词典的引用呢?我真的不确定在这种情况下,动态是什么意思。也许最好再问一个问题谢谢-这些都很有帮助。