gpt4 book ai didi

c# - Dictionary - 键不能是类?

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:51 26 4
gpt4 key购买 nike

我正在使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com