【问题标题】:How can I get a single string out of the Dictionary? C#如何从字典中获取单个字符串? C#
【发布时间】:2015-04-16 18:00:00
【问题描述】:

我在使用字典时遇到了一些问题。如何从字典中取回值

我在字典中存储了一些数据

Dictionary<UserSettings.Languages, string> objectiveLanguages
    = new Dictionary<UserSettings.Languages, string>();

objectiveLanguages.Add(UserSettings.Languages.English, objectiveNameEnglish);
objectiveLanguages.Add(UserSettings.Languages.German, objectiveNameGerman);

谁能解释一下,如何再次检索存储的值?

【问题讨论】:

  • 真的不清楚你想在这里做什么 - GetSFSObject 与任何事情有什么关系?您的 Name 属性有什么不符合您的要求?
  • 您通常不会在字典中查找 values - 您有一个 key 值并获取与该键相关联的值 。否则,您只需遍历这些值,直到找到匹配项,这并不比使用普通列表更好。如果您有键值,它只是 objectiveLanguages[key];
  • 您是否阅读了Dictionary 的文档以了解它应该如何使用?

标签: c# dictionary casting


【解决方案1】:

两种选择:

  1. 您知道该值将存在。

    string str = objectiveLanguages[UserSettings.Languages.English];
    return str;
    
  2. 您不知道该值是否存在,或者您想抛出自己的异常。

    string str;
    if(objectiveLanguages.TryGet(UserSettings.Languages.English, out str))
        return str;
    else
        throw new ArgumentException(); // or return null, or whatever.
    

这两者之间的选择取决于具体情况。由于您正在处理枚举(或等效项),因此第一个可能就足够了。另一方面,如果用户输入数据,我可能会选择第二个。这与使用int.Parseint.TryParse 的决定类似。

【讨论】:

    【解决方案2】:
    Console.WriteLine("For key UserSettings.Languages.English, value = {0}.",
        objectiveLanguages[UserSettings.Languages.English]);
    
    /* returns the value of this key, if present.
     */
    

    请参阅 MSDN 文档here 了解更多信息。

    【讨论】:

      【解决方案3】:
      Dictionary<UserSettings.Languages, string> objectiveLanguages
          = new Dictionary<UserSettings.Languages, string>();
      
      objectiveLanguages.Add(UserSettings.Languages.English, objectiveNameEnglish);
      objectiveLanguages.Add(UserSettings.Languages.German, objectiveNameGerman);
      
      // get some value out of the dict
      string dictContent = objectiveLanguages[UserSettings.Languages.English];
      

      【讨论】:

        【解决方案4】:

        使用方括号,里面有一个键。例如:

        // returns objectiveNameEnglish
        var retrievedValue = objectiveLanguages[UserSettings.Languages.English];
        

        对于您添加的每一对,第一项是键,第二项是映射到它的值。 MSDN有很好的例子https://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-10
          • 1970-01-01
          相关资源
          最近更新 更多