gpt4 book ai didi

c# - Dictionary 其中 myField 是 myObject 的成员

转载 作者:行者123 更新时间:2023-11-30 17:10:53 24 4
gpt4 key购买 nike

是否可以在 C# 中创建一个由对象组成的字典,这样 Key 只是对字段值(或 Value 的字段)的引用>,可以说是),这样就可以保证 index == myDictionary[index].myField?

例如,想象一个标准的 C# Dictionary。假设我有 Car 对象:

class Car {
string name;
int wheels;
double weight;
double horsepower;
double topSpeed;

// Appropriate constructors
}

我想将其存储在此词典中,按名称索引:

var cars = new Dictionary<string, Car>();

var newCar = Car("Ford", 4, 2387.4, 4535.7, 128.2);
cars["Ford"] = newCar;

我的标准没有保证,因为我可以做到:

cars["Ford"].name = "not Ford";

条件被打破了。我可以简单地从 Car 中删除 name 字段,但这样汽车本身就不知道自己的名字了——在今天和年龄,即使我们不考虑性能成本。

所以我的问题是:是否可以在 C# 中轻松制作 HashMap ,使哈希的值始终等于哈希元素的某些部分,并且只要元素是,哈希就会更新?

最佳答案

您正在描述 KeyedCollection类,但如果在将项目添加到集合后更改项目的键,就会遇到问题。

如果您想要一个哈希集合来处理对其元素标识属性的更改,您可以在类型(在您的示例中为 Car)上实现 INotifyPropertyChanged,并让集合重新定位项目(或删除并根据需要重新添加它们)。这将是低效的,而且极易出现错误。

关于c# - Dictionary<myField, myObject> 其中 myField 是 myObject 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11724776/

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