Section 48.7: 열거형 (Enumeration) 과 확장 메소드

확장 메소드는 열거형 (enumeration) 에 추가적인 기능을 부여하고자 하는 경우 매우 유용하게 사용될 수 있다.

흔히 사용되는 예제는 바로 변환 (conversion) 메소드를 구현하는 것이다.

public enum YesNo { Yes, No, } public static class EnumExtentions { public static bool ToBool(this YesNo yn) { return yn == YesNo.Yes; } public static YesNo ToYesNo(this bool yn) { return yn ? YesNo.Yes : YesNo.No; } }

이제 사용자는 열거형 값을 다른 타입으로 손쉽게 변환할 수 있다. 이 예제에서는 bool 로의 변환을 수행한다.

bool yesNoBool = YesNo.Yes.ToBool(); // yesNoBool == true YesNo yesNoEnum = false.ToYesNo(); // yesNoEnum == YesNo.No

확장 메소드는 이 외에도 속성 (property) 과 유사하게 동작하는 메소드를 추가하기 위해 사용될 수 있다.

public enum Element { Hydrogen, Helium, Lithium, Beryllium, Boron, Carbon, Nitrogen, Oxygen // 기타 등등 } public static class ElementExtensions { public static double AtomicMass(this Element element) { switch (element) { case Element.Hydrogen: return 1.00794; case Element.Helium: return 4.002602; case Element.Lithium: return 6.941; case Element.Beryllium: return 9.012182; case Element.Boron: return 10.811; case Element.Carbon: return 12.0107; case Element.Nitrogen: return 14.0067; case Element.Oxygen: return 15.9994; // 기타 등등 } return double.Nan; } } var massWater = 2 * Element.Hydrogen.AtomicMass() + Element.Oxygen.AtomicMass();
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

+ Recent posts