C# 以类为键的词典

C# 以类为键的词典,c#,class,dictionary,key,C#,Class,Dictionary,Key,我在学习电子工程,我是C#的初学者。我已经测量了数据,我想以二维的方式存储它。我想我可以做一本这样的字典: Dictionary<Key, string> dic = new Dictionary<Key, string>(); 为了测试它,我制作了如下内容: Dictionary<Key, string> dic = new Dictionary<Key, string>(); 获取元素: Key KE = new Key(1,1); d

我在学习电子工程,我是C#的初学者。我已经测量了数据,我想以二维的方式存储它。我想我可以做一本这样的
字典

Dictionary<Key, string> dic = new Dictionary<Key, string>(); 
为了测试它,我制作了如下内容:

Dictionary<Key, string> dic = new Dictionary<Key, string>(); 
获取元素:

Key KE = new Key(1,1);
dic.Add(KE, "hans");
...
获取元素:

Key KE = new Key(1,1);
monitor.Text = dic[KE];

有人有主意吗?

您需要重写自己类中的方法
GetHashCode
Equals
,将其用作键

class Foo 
{ 
    public string Name { get; set;} 
    public int FooID {get; set;}
    public override int GetHashCode()             
    {  
           return FooID; 
    }
     public override bool Equals(object obj) 
    { 
             return Equals(obj as Foo); 
    }

    public bool Equals(Foo obj)
     { 
          return obj != null && obj.FooID == this.FooID; 
     }
}

为什么不使用字符串作为键呢?你们到底想在字典里储存什么?你能解释一下这个用例吗?是的。我有3D房间扫描仪的数据。扫描仪有两个轴。我想根据两轴的位置存储测量值。因此,如果轴1在位置15,轴2在位置30,我想要键:15,30,你在字符串值中存储了什么?这只是为了测试。我还有一个类,其中存储了4个双值。这将是我要存储为字典值的数据。不确定这是否可行,但有许多简单的解决方法(例如:使用类名作为键)好的,你能给我发送一个示例吗?在我的回答中添加了一个示例谢谢。但是我不能在我的课堂上实施它。。你能解释一下如果我覆盖这些方法会发生什么吗?如果在youtfoo类中有两个int变量,情况会怎样?比如:类Foo{public int Name{get;set;}public int FooID{get;set;}默认情况下,调用
object
类中的
GetHashCode
Equals
方法,以便将键与您在字典中搜索的值进行比较。这不会给出所需的结果,因为比较不会根据您的自定义类进行。重写这些方法时,您可以自定义上述比较发生的方式。只需从
GetHashCode
返回一个使对象唯一的值,并在
Equals
中对类的所有属性进行相等性检查。这里是一个实现