본문 바로가기

[2]SW Development Note/[2-1.2]C#24

string.Format을 보간 문자열로 대체하라. 문자열 보간 기능 기존에 널리 사용되던 string.Format() 또한 문자열 변화과정을 잘 수행하지만,생성된 문자 열을 직접 출력해보고 올바른 형태인지를 눈으로 직접확인하기 전까지는 코드를 제대로 작성했는지 쉽게 짐작하기 어려웠다 그 이유는 이 메세드가 포맷 문자열과 인자 리스트를 분리하여 전달하는 구조이기 때문이다. 또한 이 메서드는 포맷 문자열에 나타낸 인자의 개수와 실제로 전달되는 인자의 개수가 정확히 일치하는지 확인하지 않는다. ->그럴까? Reference Source .NET Framework 4.8 를 참고해봤다 릴리즈 후 문자열을 변환한다. 결국 저자가 말하는데로 인자의 개수와 실제로 전달되는 인자의 개수가 정확히 일치하는지는 확인하지 않는다. 길이만 체크한다. StringBuilder.. 2020. 3. 5.
런타임 상수는 생성자에서 초기화될 수 있으며 그 이후에는 수정될수 없다. 런타임 상수는 생성자에서 초기화될 수 있으며 그 이후에는 수정될수 없다. 또한 그값이 런타임에 할당된다는 면에서 컴파일타임 상수와는 다르다. 이런 동작 방식의 차이로 인해 런타임 상수는 컴파일타임 상수보다 더 유연하게 활요될수있다. 런타임 상수는 생성자에서 초기화 될수 있으며 그 그이후에는 수정될수 없다. 또한 그값이 런타임에 할당된다는 면에서 컴파일 상수와는 다르다. 이런 동작 방식의 차이로 인해 런타임 상수는 컴파일타임 상수 보다 더 유연하게 활용될수 있다. DateTime 구조체는 readonly로 선언할 수 있지만 const로 는 선언할수 없다. 또한 런타임 상수는 맴버 초기화 구문뿐 아니라 생성자를 통해서도 초기화 할수 있다 C# 컴파일러는 Const를 사용하는 컴파일 타임 상수에 대해서는 참조.. 2020. 3. 4.
지역번수를 선언 할때는 var 를 사용하는것이 낫다? 지역 번수를 선언할 때는 var를 사용하는 것이 낫다? 정확한 반환타입을 알지 못한 채 올바르지 않은 타입을 명시적으로 지정하게 되면 득 보다 실이 많다 코드를 읽을 때도 var를 사용하여 암시적으로 변수를 선언 안 코드 더 잘 읽힌다. 코드를 일보다 보면 Dictionary 과 같이 정확히 기술된 타입 자체보다 JobsQueuedByRegion과 같이 타입을 유추할 수 있는 변수의 이름이 더 큰 도움이 된다. 이런 여러 가지 이유로 지역변수를 선언할 때는 Var를 사용하는 편이 낫다 P.18 지역변수에 대한 타입 추론이 C#의 고유 특성이라 할 수 있는 정적 타이핑을 훼손하는 것은 아니다. 이를 이해하려면 먼저 지역 변수에 대한 타입 추론과 동적 타이 피이 서로 다른 것임을 알아야 한다. C#에서 특정.. 2020. 3. 4.
nameof 연산자는? C# 6.0의 nameof 연산자는 Type이나 메서드, 속성 등의 이름을 리턴하는 것으로 이러한 명칭들을 하드코딩하지 않게 하는 잇점이 있다. 즉, 이는 하드코딩에 의한 타이핑 오류 방지나 혹은 차후 리팩토링에서 유연한 구조를 만들어 준다는 잇점이 있다. 예를 들어, 아래 예제와 같이 ArgumentException을 발생시킬 때, 파라미터명을 직접 하드코딩하지 않고 nameof()를 사용하면, 만약 리팩토링을 통해 id가 identity로 변경하더라도 아무런 문제가 없게 된다. // 1. 파마미터명 id (Hard coding 하지 않음)throw new ArgumentException("Invalid argument", nameof(id)); // 2. 속성명을 nameof 로 추출Console.W.. 2020. 2. 15.