C#2020. 9. 4. 09:29

C#에서 Class를 Dictinonary Key로 사용하는 방법에 대해서 정리를 했다.

 

Dictionary<Class1, Class2> dict = new  Dictionary<Class1, Class2>();

 

 

 

* 위와 같이 Class1을 Key로 사용할려면

public class Class1

{

    public string Value1 { get; set; }

    public int Value2 { get; set; }

 

    public override int GetHashCode()

    {

         return Value1.GetHashCode() + Value2.GetHashCode();

    }

 

    public override bool Equals(object obj)

    {

        Class1 o = obj as Class1;

        return o != null && (o.Value1 == this.Value1 || o.Value2 == this.Value2); 

    }

}

 

- Dictionary에서 Key를 Class로 사용하기 위해서는

 

Key에 해당하는 Class에 GetHashCode()와 Equals(object)를 재정의 해줘야 한다.

 

 

* 사용법 

 

Dictionary<Class1, Class2> dict = new  Dictionary<Class1, Class2>();

 

dict.Add(new Class1() { Value1 = "My Value", Value2 = 1 }, new Class2() {....} );

dict.Add(new Class1() { Value1 = "My Value", Value2 = 2 }, new Class2() {....} );

 

- 위와 같은 형식으로 Dictionary Class를 Key로 사용할 수 있다.

 

 

Class2 c = dict[new Class1() { Value1 = "My Value", Value2 = 1 }] ;

 

dict[new Class1() { Value1 = "My Value", Value2 = 1 }] = new Class2() {...} ;

 

- 위와 같은 형식으로 Dictionary Value를 읽어오고 저장할 수 도 있다.

 

 

Posted by kongzz