C#不允许从类派生结构,但所有ValueType都派生自Object.这种区别在哪里?
CLR如何处理这个问题?
我需要一种为对象字典生成键的方法.但是,我有一些要求使这有点困难.这是场景:
private在静态类中.equal字典中另一个对象的新对象,则该键必须不同,因为它们是两个独立的对象.解决方案#1
所有.Net对象都包含一个名为的方法.GetHashCode(),该方法返回一个整数值.您可以将其用作密钥.
问题
不可能.MSDN国家:
两个相等的对象返回相等的哈希码.
这打破了req#5,我假设(但没有测试)req.#4.我希望有这样一个选项,如果它符合这些规则.
解决方案#2
将指向对象的指针转换int为a并将其用作键.
问题
这打破了req的本质.#3.传递指针并将它们用作键并不安全.
解决方案#3
将指向对象的指针转换为整数哈希值,并使用哈希作为键.
问题
虽然这没有违反任何规则,但我宁愿避免访问指针,因为这将涉及使用unsafe代码.如果必须的话,我不反对使用不安全的代码,但如果可能的话,我宁愿避免使用它.
也许我的要求有点挑剔.必须有一些合理的方法从唯一对象派生密钥.有没有人经历过这样的场景并解决了这个难题?