안녕하세요? 오탈자와 오탈자는 아니지만 제가 보기에 어색하게 느껴지는 것들을 여쭤보고 싶어서 글을 올려봅니다. 너무 사소해 보일만한 것도 있을 텐데 선생님께서 잘 가려서 봐주시길 바라겠습니다.
- p.224, 숫자 구분자와 함께 사용하기 항목 바로 아래 소스 부분에 있어야 할 주석 처리한 코드가 책에는 없다보니, p.225 맨 처음 "이 코드의 주석 처리한 부분보다는~" 문장이 어색하게 되었습니다.
깃헙에 올려놓으신 소스에는 주석 처리한 코드가 제대로 나와 있습니다.
https://github.com/gilbutITbook/006890/blob/master/DotNet/DotNet/18_Array/08_DigitSeparator/DigitSeparator.cs
빠진 코드: //int[] numbers = {1, 1000, 10000, 1000000};
- p.225, 이진수 리터럴을 배열로 저장하기 항목 마지막에 있는 "다음 샘플 코드처럼 이진수 문자열과~" 부분에서, 다른 부분에서는 전부 이진수 리터럴로 하셨는데 여기만 '문자열'로 되어 있습니다. 내용은 이해 가지만 혹시나 오타인가 해서 여쭤봅니다.
- p.240, 실행결과 바로 아래 "또는 각 차원의~" 문장에서 '또는' 보다는 '또한'이 문맥상 어울리지 않나 싶습니다.
- p.242, 소스코드의 주석 부분에 "//var item에서 item은 numbers 형식"이라고 되어 있는데, "item은 numbers의 요소의 형식"이라고 하는 게 이해하기 쉽지 않겠나 싶어 여쭤봅니다.
- p.292, 코드 실행결과 아래 문장, "변수로 Print 함수에 name과 age를 전달하는 형태와 구조체로, Print 함수에~" 부분에서, 콤마 위치가 조금 어색합니다. 내용 이해에는 문제가 없습니다만 문맥상 "형태와, 구조체로 Print 함수에~" 처럼 '형태와' 뒤에 오는 게 맞지 않았을까 싶습니다.
- p.337, 문자열을 비교하는 두 가지 방법 정리하기 항목에서, "Equals() 메서드에 추가 옵션인 StringComparison 열거형의 OrdinalIgnoreCase 값을 사용해야 합니다." 문장 중간에, 'InvariantCultureIgnoreCase 또는'을 넣는 게 어떨까 합니다. 왜냐하면, 바로 아래 예제에는 OrdinalIgnoreCase가 안 나오고 InvariantCultureIgnoreCase가 나오기 때문입니다(다음 예제에 가서 나옴). 이렇게 하면 혹시라도 당황할 여지가 줄어들지 않을까 싶습니다.
변경한 문장: "StringComparison 열거형의 InvariantCultureIgnoreCase 또는 OrdinalIgnoreCase 값을 사용해야 합니다."
- p.341, 5번 항목에서, "Str[5] 형태로~"의 배열 이름 첫번째 문자는 소문자가 되어야 바로 아래 소스코드와 일치할 것 같습니다. Str[5] -> str[5]
- p.363, "컬렉션은 반복하여 사용할 수 있는 형식 안정성으로 크기를 동적으로 변경할 수 있는 장점이 있습니다." 문장에서, "반복하여 사용할 수 있는 형식 안정성으로" 부분은 컬렉션 자칫 모든 컬렉션의 특징으로 이해하게 만들 수도 있지 않을까 싶습니다.
MS 설명서는 이를 제네릭의 이점으로 설명하고 있고(https://learn.microsoft.com/ko-kr/dotnet/standard/generics/#advantages-and-disadvantages-of-generics), 이 책에서도 컬렉션과 제네릭을 명확히 구별함은 물론, 28 제네릭 사용하기 장에서 제네릭의 형식 안정(전)성을 언급하고 있기 때문에, 위의 내용이 제네릭에 한정된다는 취지의 설명이 있으면 좋지 않을까 싶습니다.
- p.363, 표 27-1 닷넷 컬렉션의 역사에서 맨 마지막 Span<T>의 추가 시기의 버전 번호 7.0은 .NET 버전이라고 하면 너무 최신인 것 같습니다. 찾아보니, Span<T> 추가는 C# 7.2 또는 .NET Core 2.1 버전이라는 내용이 있네요(https://learn.microsoft.com/en-us/archive/msdn-magazine/2018/january/csharp-all-about-span-exploring-a-new-net-mainstay).