본문 바로가기

공부/개발독서 - c++, c#

(4)
[EMC++] 소개 소개 c++11의 변화의 폭은 매우 크다 - auto선언, 범위 기반 for 루프, 람다 표현식, 오른값 참조 등등.. - 새로운 동시성 기능 - nullptr와 별칭 선언 등장 - 스마트 포인터 - 객체 이동 이 책은 c++11과 c++14의 기능들 자체가 아니라, 그 기능들의 효과적인 적용 방법을 서술하는 데 전념 c++11에서 가장 널리 쓰이는 기능은 아마 이동 의미론(move semantics) - 오른값(rvalue)에 해당하는 표현식과 왼값(lvalue)에 해당하는 표현식이 구분됨 - 오른값은 이동 연산이 가능한 객체를 가리키지만, 왼값은 일반적으로 그렇지 않음 - 일반적으로, 주소를 취할 수 있다면 왼값, 없다면 오른값 함수 호출의 맥락에서, - 인수(argument): 함수에 전달한 표현식..
[effective C#] 1장 C# 언어 요소 (아이템 8 ~ 10) 아이템8: 이벤트 호출 시에는 null 조건 연산자를 사용하라 이벤트 핸들러가 결합되어 있는지 확인하는 코드를 추가하다 이벤트가 있는지 확인하는 코드와 이벤트를 발생시키는 코드 사이에 경쟁 조건(race condition)이 발생할 가능성이 있다. 이 문제는 C# 6.0의 null 조건 연산자를 사용하면 깔끔하게 해결할 수 있다. null 조건 연산자는 원자적으로 처리된다 아이템9: 박싱과 언박싱을 최소화하라 값 타입은 다형적이지 못하다. .Net Framework는 모든 타입의 최상위 타입을 참조 타입인 System.Object로 정의하고 있다. .Net Framework는 박싱과 언박싱이라는 방법을 통해 이 두 가지 서로 다른 타입을 이어준다. 박싱과 언박싱은 성능에 좋지 않은 영향을 미친다. 때로는..
[effective C#] 1장 C# 언어 요소 (아이템 5 ~ 7) 아이템5: 문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라 아이템4 에서 다룬 문자열 보간 기능의 결과로 생성되는 반환값은 문자열일 수도 있지만 FormattableString을 상속한 타입일 수도 있다. 다음 코드는 FormattableString 타입의 객체를 이용하여 문화권과 언어를 지정하여 문자열을 생성하는 방법을 나타낸다. public static string ToGerman(FormattableString src) => string.Format(null, System.Globalization.CultureInfo.CreateSpecificCulture("de-de"), src.Format, src.GetArguments()); public static string..
[effective C#] 1장 C# 언어 요소 (아이템 1 ~ 4) C++이나 Java처럼 C#을 사용하면 C#의 고유한 장점을 살릴 수 없을 뿐더러 심각한 문제 상황에 처할 수 있다. 이번 챕터에서는 C#을 C#답게 쓰기 위한 핵심 요소를 살펴볼 것이다. 아이템 1: 지역변수를 선언할 때는 var를 사용하는 것이 낫다 C#언어는 익명타입을 지원하기 위해 타입을 암시적으로 선언할 수 있는 손쉬운 방법을 제공한다. 정확한 반환 타입을 알지 못한 채 올바르지 않은 타입을 명시적으로 지정하게 되면 득보다 실이 많다. → IEnumerable과 이를 상속하는 IQueryable 등 정확히 기술된 타입 자체보다는 타입을 유추할 수 있는 변수의 이름이 더 큰 도움이 된다. var를 사용했는데 더 어지러운 경우 메서드 이름만으로 반환 타입을 짐작하기 어려운 경우가 있는데, 이럴때 v..