【问题标题】:Mapping of some Data in c#c#中一些数据的映射
【发布时间】:2010-11-04 05:43:40
【问题描述】:

我正在寻找一个在 c# 中映射数据的好解决方案。
起初我有一个字符“a”和一个角度“0.0”度。
映射的最佳解决方案是什么?一个列表 ?

一个要求是我必须搜索学位,如果它不在“列表”中,然后我添加一个新的......等等

感谢您的帮助:)

编辑:我必须找出角度是否存在!如果角度不存在,则添加一个新字符

【问题讨论】:

    标签: c# list mapping


    【解决方案1】:

    字典

    例子:

    Dictionary< double, char> dic = new Dictionary< double, char>();
    //Adding a new item
    void AddItem(char c, double angle)
    {
        if (!dic.ContainsKey(angle))
            dic.Add(angle,c);
    }
    //Retreiving an item
    char GetItem(double angle)
     {
        char c;
        if (!dic.TryGetValue(angle, out c))
            return '';
        else
            return c;   
     }
    

    【讨论】:

    • 但是 char, double 必须是 double, char
    • 如何获取特定双精度的字符?你必须修复: void AddItem(double angle, char c, Dictionary dic)
    • 我假设您在一个类中使用此代码,而 dic 是该类的成员,因此您不需要在每个函数中都引用它。
    【解决方案2】:

    使用字典。

    var d =new Dictionary<string,double> ()`
    

    【讨论】:

      【解决方案3】:

      Hashtable 看起来就是您正在寻找的东西。将学位设置为 Hashkey,以后可以很容易地进行搜索。

      Hashtable ht = new Hashtable(); if (!ht.ContainsKey(angle)) ht.Add(key, value);

      【讨论】:

      • 之后我可以搜索特定角度的字符吗?谢谢
      • 您的答案通常是正确的,但是对于用户想要“char”键的这个特定问题,哈希表引入了不必要的开销和空间要求,因为它总是对键进行哈希处理。
      • 在 .NET 2.0 及更高版本中,您应该真正使用 Dictionary(TKey, TValue) - 请参见此处:msdn.microsoft.com/en-us/library/xfhwa508.aspx
      • 你的意思是:字典 dic = new Dictionary(); ... void AddItem(double angle, char c) { if (!dic.ContainsKey(angle)) dic.Add(angle, c); } 但我怎样才能让 c 倾斜?
      【解决方案4】:

      字典应该没问题:

      Dictionary<string, float> dict = new Dictionary<string, float>();
      dict.Add("a", 0.0);
      float angle = dict["a"]
      if( !dict.Contains("b"))
      {
        dict["b"] = 1.0;
      }
      

      【讨论】:

      • 在问题中他想按角度而不是字符搜索,所以角度应该是关键。
      【解决方案5】:

      也许是SortedDictionary.?

       private SortedDictionary<string, double> _myStuff;
      
      ...
      
      if (!_myStuff.ContainsValue(0))
      ...
      

      【讨论】:

        猜你喜欢
        • 2020-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 2021-06-16
        • 2011-06-27
        • 2011-09-28
        相关资源
        最近更新 更多