2011-12-30 8 views
1

実行時に従業員クラスから従業員のkinidを渡すと、マネージャの詳細をマネージャクラスから取得したいと考えています。 EqualsまたはHashcodeを使用してこれを行うにはどうすればよいですか?次のプログラムでEqualsまたはhashcodeを使用するにはどうすればいいですか

public class employee 
{ 
    public string empname { get; set;} 
    public string location { get; set; } 
    public int kinid { get; set; } 
    public double magkin { get; set; } 
} 

public class manager 
{ 
    public string magname { get; set; } 
    public double magkin { get; set; } 
} 

Dictionary<employee, manager> relation = new Dictionary<employee, manager>(); 

答えて

1

私は長い時間でのC#を使用していないが、このようなものは動作するはずです:
kinidFindを検索したいkinidです。

manager findManager(int kinidFind) { 
    foreach(KeyValuePair<employee, manager> i in relation) { 
        if (i.Key.kinid==kinidFind) { 
         return i.Value; 
        } 
       } 
} 
+0

あなたのためにreturn文を簡略化しました。 –

+0

私のプログラムでこのコードをどこで使うべきですか? – user1099841

0

や辞書はあなたにもそれは固有の識別子がkinidであると仮定するとブラッズの回答から、この時点での感触や味の問題だけ

foreach (var pair in relation) 
{ 
    if (pair.key == kinidFind) 
    { 
     return relation[pair.key]; 
    } 
} 
1

だ、このようにそれを列挙することができます読み込まれているので、あなたが次のことを行うことができ、その後、従業員クラスに、(あなたは、特定の従業員の他のフィールドを気にしないでください):

override int GetHashCode() 
{ 
    return kinid; 
} 

override bool Equals(Object obj) 
{ 
    if (obj == null) return false; 
    emploee emp = obj as employee; 
    if ((System.Object)emp == null) return false; 

    return (kinid == emp.kinid); 
} 

しかし、これは義和ための良い一般的な解決策ではありません後で他のフィールドで従業員を検索したい場合はtを選択します。 intは、それは自明の従業員のkinidある 辞書< int型、マネージャー>:

はにその辞書を変更することを検討してください。

関連する問題