c# - Dictionary<Key,Value> - 键不能是类?

标签 c#

我正在使用 Vector3 - 包含属性 XYZ 作为键字典。假设我已经在字典 (myDic) 中添加了一个值为 (0,0,0) 的 Vector3

然后我这样做:

Vector3 vec = new Vector3(0,0,0);
if (!myDic.ContainsKey(vec))
{
    //Should never reach here.
}

我还为 Vector3 类的 ==!= 创建了重载运算符。

它无论如何都会到达那里。使用像 Vector3 这样的对象作为字典的键是否有问题?

最佳答案

您需要覆盖 GetHashCodeEquals在你的类(class)里。该词典结合了两者,第一个检查是哈希,关键是 Equals。 .为 == 提供自定义实现不会为您的字典做任何事情。

如果您不能或不愿意在类本身中覆盖这些方法,您的另一个选择是实现 IEqualityComparer<YourClass>并在字典构造函数中提供一个实现实例。在此实现中,您将为上述方法提供代码。

关于c# - Dictionary<Key,Value> - 键不能是类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4541798/

相关文章:

c# - 将文件中的十六进制添加到 List<byte>

c# - 使用 MapHttpRoute 配置 WebAPI 路由时出错

c# - 为什么这个属性会导致 StackOverFlow 异常?

c# - 我们如何发现所有字节都从套接字接收?

c# - 单独项目中的部分类

c# - 从另一个线程更新标签

c# - ASP.NET 列表框高度

c# - 在字符串的所有实例前面添加一个字符

c# - 从azure blob下载文件并出现空pdf页面

c# - 如何捕获子控件下的 mousemove 事件