본문 바로가기

게임개발/Effective C#4

[Effective C#] string.Format() vs 문자열 보간 string.Format() 대신 문자열 보간 기능을 사용한다. int height = 175; int age = 26; //문자열 보간(string interpolation) Console.WriteLine($"I'm {age} years old. I'm {height}cm tall"); //String.Format Console.WriteLine(String.Format("I'm {0} years old. I'm {1} cm tall", age, height)); 위 두 코드는 모두 같은 문자열, "I'm 26 years old. I'm 175cm tall" 이라는 결과를 출력한다. 그러나 String.Format() 함수를 사용하는 대신 문자열 보간 기능(string interpolation)을 사.. 2023. 11. 12.
[Effective C#] 3. is, as vs cast (보충 필요) 형 변환이 필요할 시, is/as를 사용하는 것이 더 낫다. as 연산자를 이용한 형 변환 as 연산자를 이용한 형 변환 방법은 다음과 같다. TypeToCasted castedObject = object as TypeToCasted; 위 코드는 object를 TypeToCasted 형태로 형 변환시키고, 만일 형 변환을 정상적으로 수행하지 못하거나 object가 null인 경우 null 값을 반환한다. 따라서 위와 같은 방식으로 형 변환을 수행하면 TypeToCasted castedObject = object as TypeToCasted; if(type!=null){...} else{//report error} 위와 같이 간단한 검사만으로 안전한 코드를 작성할 수 있다. 만일 (TypeToCast)ob.. 2023. 11. 11.
[Effective C#] 2. const vs readonly 성능이 아주 중요하고, 상수의 값이 절대 바뀌지 않는 경우에만 const를 사용하고, 그 외에는 readonly를 사용한다. C#의 상수는 두 유형으로 나뉜다. const로 선언되는 상수는 compile-time 상수, readonly로 선언되는 함수는 runtime 상수이다. compile-time 상수는 컴파일 시에 그 값이 아예 literal로 대체된다. 따라서 compile-time 상수는 내장 숫자형, enum, 문자열, null만 사용 가능하며, 메서드 내부에서도 선언할 수 있다. runtime 상수는 컴파일 시에 해당 변수에 대한 참조 코드를 생성한다. runtime 상수는 구조체, 클래스에 대해서도 사용할 수 있지만, 메서드 내부에서 선언할 수 없다. 상술한 특별한 경우에만 const를 사.. 2023. 11. 7.
[Effective C#] 1. 지역 변수에 대한 var 사용 1. var C#의 var keyword는 compile time에 변수의 자료형을 추론하는 keyword이다. int a = 100; var b = 100; b에 대하여 type을 명시해 주지 않았지만, 컴파일러가 자동으로 RHS의 타입을 b에 할당한다. (단, var keyword를 사용하려면 변수를 선언할 때 초기화해야 한다.) 2. 지역변수에 var keyword를 사용하는 이유 사실 명시적으로 type을 표기하는 것이 지금까지 내가 해 오던 방식이었기에 처음에는 상당히 의아했다. 코드를 이해하기 너무 어려워지는 것 아닌가 하는 생각이 들었기 때문이다. 하지만, var type을 사용하면서도 가독성을 유지하거나 상승시킬 수 있다. 정확히 타입을 기술하는 대신 타입을 유추할 수 있는 변수명을 도입하.. 2023. 11. 6.