dotNet 2

[Effective C#] 캐스트보다는 is, as가 좋다.

C#에서의 형 변환 - as object o = Factory.GetObject(); // as 변환 MyType t = o as MyType; if (t != null) { //MyType 타입의 t 객체 사용 } else { //형변환 실패 시 } - cast(강제 형 변환) object o = Factory.GetObject(); // cast 변환 try { MyType t; t = (MyType) o; //MyType 타입의 t 객체 사용 } catch (InvalidCastException) { //형변환 실패 오류 } => as를 사용할 경우 작성하기 더 쉽고 읽기도 편하다. try/catch 문이 없기 때문에 성능도 더 좋다. as와 cast의 동작 차이- '사용자 정의 형변환을 어떻게 다..

개발/C# 2021.01.16

[Effective C#] C# 정적 클래스 멤버 초기화 유의사항

정적 멤버 변수를 포함하는 타입이 있다면 인스턴스를 생성하기 전 반드시 정적 멤버 변수를 초기화 하여야한다. C#에선 '정적 멤버 초기화'와 '정적 생성자' 두가지를 제공한다. * 정적 변수를 초기화하기 위해 인스턴스 생성자나 전용의 private 메서드 혹은 다른 관용구를 사용해서는 안된다. 정적 멤버 초기화 - 인스턴스 멤버 초기화와 마찬가지로 정적 멤버를 간단히 초기화하는 경우라면 정적 생상자보단 멤버 초기화 구문을 사용하는 것이 좋다. - 정적 생성자가 호출되기 이전에 실행되며, 베이스 클래스의 정적 생성자보다도 먼저 호출된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class MySingleton { private static reado..

개발/C# 2020.12.31
반응형