EffectiveC# 4

[Effective C#] nameof() 연산자

nameof() - MS Link 변수, 형식 또는 멤버의 이름을 문자열 상수로 가져온다. Console.WriteLine(nameof(System.Collections.Generic)); // output: Generic Console.WriteLine(nameof(List)); // output: List Console.WriteLine(nameof(List.Count)); // output: Count Console.WriteLine(nameof(List.Add)); // output: Add var numbers = new List { 1, 2, 3 }; Console.WriteLine(nameof(numbers)); // output: numbers Console.WriteLine(nameof(..

개발/C# 2021.01.24

[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#] 지역변수 선언은 var를 사용/var 이해하기

var : 암시적 타입 지역변수(implicitly typed local variable) var i = 10; // Implicitly typed. int i = 10; // Explicitly typed. var는 데이터 타입을 개발자가 아닌 컴파일러가 결정하게 만드는 키워드이다. 위 예제에서 var i의 값은 int 10이 설정됨으로 컴파일러에 의해 int형으로 타입이 결정된다. var 사용 예제 // i is compiled as an int var i = 5; // s is compiled as a string var s = "Hello"; // a is compiled as int[] var a = new[] { 0, 1, 2 }; // expr is compiled as IEnumerable..

개발/C# 2021.01.09

[Effective C#]C# 멤버 초기화 - 할당 구문보다 멤버 초기화를 사용한다.

할당 구문보다 멤버 초기화(member initializer) 구문 사용 - 생성자가 여러개인 경우, 멤버 변수 초기화를 누락하여 사용할 수 있다. 멤버초기화는 이러한 누락을 방지할 수 있다. 1 2 3 4 5 6 public class MyClass { //컬렉션을 선언하는 동시에 초기화 private List labels = new List(); } Colored by Color Scripter cs 이와 같은 코드는 MyClass 타입에 몇개의 생성자가 추가되든 올바른 초기화를 사용할 수 있다. * 컴파일러는 모든 생성자의 시작 부분에 멤버 초기화 구문을 포함시킨다. 새로운 생성자가 추가되거나 사용자가 생성자를 선언하지 않아 기본 생성자가 만들어진 경우에도, 항상 생성자가 실행되기 전 멤버 초기화 ..

개발/C# 2020.12.30
반응형