是否可以在 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/