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/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
48.9: 인터페이스에 확장 메소드 적용하기 (0) | 2022.10.21 |
---|---|
48.8: 정적 (static) 타입에 기반한 확장 메소드 호출 (0) | 2022.10.21 |
48.6: 메소드 chaining 을 위한 확장 메소드 사용 (1) | 2022.09.22 |
48.5: 확장 메소드의 접근 가능 범위: public (혹은 internal) 멤버들 (0) | 2022.09.21 |
48.4: Generic 확장 메소드 (1) | 2022.09.21 |