我已经阅读了有关如何Dictionary.ContainsKey()
工作的 MSDN 文档,但我想知道它实际上是如何进行相等比较的?基本上,我有一个以引用类型为键的字典*,我希望该ContainsKey()
方法检查该引用类型的某个属性作为确定该键是否存在的基础。例如,如果我有 aDictionary(MyObject, int)
并且有一个名为“TypeID”MyObject
的公共属性 (of ),我是否可以检查其中一个键的 a是否等于?我可以重载操作员吗?int
ContainsKey(MyObject myObject)
TypeID
myObject
==
- 引用类型是一个名为“Duration”的对象,它包含一个值 (
double Length
);“持续时间”是我的音乐程序中用于表示特定声音持续多长时间的基本类型。我从中派生出包含更复杂时间概念的类,例如西方音乐时间签名,但希望它们在长度方面都具有可比性。
编辑:正如建议的那样,我在我的对象上实现了 IEquitable,如下所示:
public class Duration : IEquatable<Duration>
{
protected double _length;
/// <summary>
/// Gets or Sets the duration in Miliseconds.
/// </summary>
public virtual double Length
{
get
{
return _length;
}
set
{
_length = value;
}
}
// removed all the other code that as it was irrelevant
public override bool Equals(object obj)
{
Duration otherDuration = (Duration)obj;
if (otherDuration._length == _length)
{
return true;
}
else
{
return false
}
}
}
这就是我需要做的吗?