본문 바로가기

C#

(27)
[C#]sealed 한정자 [sealed] [sealed] 가상 / 추상 인터페이스 등의 카워드로 클래스 구조를 잡다 보면 너무 복잡해질 수 있다 . 이를 위한 한정자가 Sealed이다 . 상속이 여러번 일어나며 계층이 깊어지게 되면 나중에 코드 구현하는 사람입장에서는 어디까지 재정의를 해야 하는지 알기가 쉽지 않고 불필요한 기능 역시 구현 할 수 있으므로 구조를 잡는 입장에서 확실하게 sealed를 사용하는 습관을 가지면 좋을 것 같다 클래스 / 속성 / 메서드에 사용이 가능하다 클래스 class A {} sealed class B : A {} sealed class C : B {}//재정의가 불가하다 메서드 class X { protected virtual void F() { Console.WriteLine("X.F"); } ..
[ C# ] Enum 결합하여 사용하기 [Flags] [ Flags 어트리뷰트 ] 해당 어트리뷰트를 이용하면 Enum형을 비트 필드 즉 , 플래그 집합으로 처리 할 수 있다 . Flags 어트리뷰트를 정의함과 정의안함의 차이는 다음과 같다 . // Define an Enum without FlagsAttribute. enum SingleHue : short { None = 0, Black = 1, Red = 2, Green = 4, Blue = 8 }; // Define an Enum with FlagsAttribute. [Flags] enum MultiHue : short { None = 0, Black = 1, Red = 2, Green = 4, Blue = 8 }; // The example displays the following ou..
[ C# ] ?.. / ?? 연산자 [ ?. 연산자 ] [ 의미 ] ?. 연산자는 Null 이 아니라면 참조하고 , Null 이라면 Null 로 처리한다 . [ 예시 ] class Student { public string MyName; }; static void Main( string[] args ) { Student Yeo = new Student(); Console.WriteLine( Yeo?.MyName ); // null이 아니라 MyName을 참조한다 . Student Kim = null; Console.WriteLine( Kim?.MyName ); // 아무것도(null) 출력되지 않음. } [ ??연산자 ] [ 의미 ] ?? 연산자는 Null 오른쪽 값으로 처리한다 . [ 예시 ] string YeoName = "Yeo" s..