どのように機能するかについてのMSDNドキュメントを読みましたが、Dictionary.ContainsKey()
実際にどのように等式比較を行うのか疑問に思いました。基本的に、私は参照型*にキー設定された辞書を持っておりContainsKey()
、キーが存在するかどうかを判断するための基礎として、その参照型の特定のプロパティをチェックするメソッドが必要です。たとえば、がDictionary(MyObject, int)
あり、 「TypeID」というMyObject
パブリックプロパティ(の)がある場合、キーの1つに等しいaがあるかどうかを確認できますか?演算子をオーバーロードできますか?int
ContainsKey(MyObject myObject)
TypeID
myObject
==
double Length
参照型は、値( )を保持する「Duration」と呼ばれるオブジェクトです。「デュレーション」は、特定のサウンドがどのくらい続くかを示すために私の音楽プログラムで使用される基本タイプです。私はそれから、西洋の拍子記号のようなより洗練されたタイミングの概念を組み込んだクラスを導き出しますが、それらすべてが長さの点で比較可能であることを望んでいます。
編集:提案されたように、私は次のようにオブジェクトに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
}
}
}
これが私がする必要があるすべてですか?