본문 바로가기
개발언어/.NET

Enum의 Boxing과 관련된 유용한 강좌

by 공장장코난 2021. 3. 25.

C#에서 Dictionary를 사용하면서 Enum을 Key로 할때가 종종 있다. 그때마다 Boxing과 UnBoxing으로 인해
성능저하 이슈로 찜찜했는데, 마침 좋은 강좌가 있어 link해 둔다.

사용법

public class RemoteInfo
{
   public int SVR_ID;
   public string SVR_IP;
   public string SVR_IP;
}

public enum SvrID
{
   ID1 = 1,
   ID2,
   ID3
}

public static class GlobalValues
{
  //EnumDictionary dictionary 구현 class를 전역으로 선언
  public EnumDictionary<SvrID, RemoteInfo> Remotes = new EnumDictionary<SvrID, RemoteInfo>();
}

private void InitDictionary()
{
   RemoteInfo rm1 = new RemoteInfo();
   rm1.SVR_ID = Convert.ToInt32(SvrID.ID1);
   rm1.SVR_IP = "192.168.0.25";
   rm1.SVR_NM = "테스트1";
   GlobalValues.Remotes.Add(rm1);

   RemoteInfo rm2 = new RemoteInfo();
   rm2.SVR_ID = Convert.Int32(SvrID.ID2);
   rm2.SVR_IP = "192.168.0.26";
   rm2.SVR_NM = "테스트2";
   GlobalValues.Remotes.Add(rm2);

   RemoteInfo rm3 = new RemoteInfo();
   rm3.SVR_ID = Convert.Int32(SvrID.ID3);
   rm3.SVR_IP = "192.168.0.27";
   rm3.SVR_NM = "테스트3";
   GlobalValues.Remotes.Add(rm3);
}

접근
RemoteInfo test = GlobalValues.Remotes[SvrID.ID1];

사용법은 기존이랑 동일~~





강좌 주소
https://www.slideshare.net/devcatpublications/enum-boxing-enum-ndc2019

이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019

Nexon Korea 이무림 편리하고 성능좋게 Enum 사용하기 Enum의 Boxing을 어찌할꼬?

www.slideshare.net

 

샘플 github 주소
https://github.com/netics01/EnumDictionary

netics01/EnumDictionary

Dictionary without boxing when using enum type key. - netics01/EnumDictionary

github.com