gpt4 book ai didi

C# 字典 - 自定义对象

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

我以前从未使用过词典,我只是想了解更多有关它们的信息。

谈到自定义对象时,我有点迷茫。是否可以使用像下面的类这样的自定义对象作为键而不是值?

class Car
{
public Car(int id, string model)
{
ID = id;
Model = model;
}

public int ID { get; private set; }
public string Model { get; private set; }
}

如果你在哪里创建字典,就像这样:-

 Dictionary<Car, bool> Cars = new Dictionary<Car, bool>();

在搜索字典内容时,您将如何使用 Car 对象作为键?

最佳答案

是的,这是很有可能的,但需要注意一个非常重要的警告。

字典使用默认相等比较检查键。对于自定义类对象,这意味着“这是对同一对象 的引用”。不是“这是一个具有相同数据的对象吗”。

例如:

var car1 = new Car(1, "Avalon");
var car2 = car1;
var car3 = new Car(1, "Avalon");

Cars.Add(car1, true);
Console.WriteLine(Cars[car2]); // writes "True";
Console.WriteLine(Cars[car3]); // throws a KeyNotFoundException

您可以通过覆盖类的 GetHashValue()Equals() 来解决这个问题。参见 here .

关于C# 字典 - 自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15094384/

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