私は辞書を持っています。このコードを使ってオブジェクトのインデックスを取得します:C#辞書に辞書が見つかりません<T, T>
type.Name = _shuffledClasses.Where(entry => entry.Key.Name.Equals(originName))
.Where(entry => entry.Key.Namespace.Equals(type.Namespace))
.Select(item => item.Value).GetEnumerator().Current.Name;
しかし、オブジェクトは見つかりません。私は、オブジェクトが正しく作成されているかどうか、そしてそれが存在するかどうかを再度チェックします。対象のオブジェクトは「キー」列にあり、「値」列でオブジェクトを取得することはできません。
私はaswell動作しない、また、コードのこの部分を試してみました:次のように
type.Name = _shuffledClasses[new Classes()
{
Name = originName,
Namespace = type.Namespace
}].Name;
私の「クラス」オブジェクトが見えます:
class Classes
{
public string Namespace { get; set; }
public string Name { get; set; }
}
なぜ文句を言わない、それは、オブジェクトを見つけますか?
今私のクラスは次のようになりますし、まだ動作しません、私はいくつかの研究を行なったし、私が等しく、GetHashCodeメソッドをオーバーライドしてみました:
public override bool Equals(object obj)
{
Classes fooItem = obj as Classes;
return fooItem == this;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
あなたは終わっていませんでしたのでクラス内で 'GetHashCode'と' Equals'を乗ります。これは 'Dictionary'と' HashSet'のキーとして動作するために必要です。 – MarcinJuraszek
@MarcinJuraszek 2番目のバージョンを使用する場合も、Equalsをオーバーライドする必要がありますか? – ioncodes
2番目のバージョンは 'GetHashCode' /' Equals'実装を必要とするバージョンです。 – MarcinJuraszek