Microsoft MVP성태의 닷넷 이야기
C#12 기본 생성자가 뭔가 내부 필드를 만드는 것 같습니다. [링크 복사], [링크+제목 복사],
조회: 497
글쓴 사람
영귤
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)

class PersonDTO(string name, int age)
{
    //public string Name { get; private set; } = name;
    //public int Age { get; private set; } = age;

    public override string ToString() => $"{name}, {age}";
}

제 설정이 뭔가 이상한지 자꾸 컴파일이 되네요.


[연관 글]






[최초 등록일: ]
[최종 수정일: 8/17/2024]


비밀번호

댓글 작성자
 



2024-08-17 10시45분
[영귤] 16.3 마지막 예제에도 비록 주석은 쳐있지만, Range.Create()가 존재하지 않고, new Range()를 해야 컴파일이 되는 것 같습니다.
[guest]
2024-08-18 08시46분
@영귤 님 의견이 2개 모두 맞습니다. ^^; 꼼꼼하게 확인하지 못한 제 실수입니다. 올려 주신 소스코드의 경우, C# 컴파일러가 내부 필드를 정의하고 그걸 경유해 ToString으로 연결하고 있습니다. 책에 실린 예제는,

public class PersonDTO(string name, int age);

필드를 생성하지 않지만, 언제나 그런 것은 아니므로 설명이 잘못되었습니다.

-----------------

또한, Range.Create도 정식 버전에 들어서는 없어진 듯합니다.

(신규 문법 정리를 preview 버전부터 하다 보니 이런 문제가 발생하는군요. ^^; 앞으로는 책으로 옮기기 전에 좀 더 세밀하게 확인을 하겠습니다.)

의견 주셔서 감사합니다. 오타에 넣어야겠습니다. ^^;
정성태
2024-08-19 08시37분
관련해서 정오표에 추가했습니다.

https://www.sysnet.pe.kr/2/0/13142#errata

(영귤 님, 다시 한번 피드백 너무 감사드립니다. ^^)
정성태
2024-08-21 10시26분
[영귤] 20.7 Interceptor 에서 946 페이지에 Program.Method 가 3개나 찍힌 것 같아요^^
[guest]
2024-08-21 07시41분
@영귤 님, 해당 코드의 "static void ProgramMethod()" 이름이 잘못됐습니다. "static void Method()"가 맞습니다. 마찬가지로 정오표에 실었습니다.

(거듭, 거듭 감사합니다. ^^)
정성태

[1] 
NoWriterDateCnt.TitleFile(s)
14영귤8/17/2024497C#12 기본 생성자가 뭔가 내부 필드를 만드는 것 같습니다. [5]
13김용태5/8/20246503c# 12 책 내용중에 궁금사항이 있네요 [1]
12이종효12/21/20236648String.Format은 정적 메서드 아닌가요? [1]
10다크파이썬8/24/20237410C# 11 개정판 계획이 있으신가요? [1]
9유동한8/7/20236761.NET Framework의 BCL에 대하여 질문드립니다. [1]
5김태원5/28/20236948C# 이해안가는부분 [1]
4리세5/28/20236702안녕하세요. c#의 워커스레드에 대해 질문을 드립니다. [3]
3영귤5/19/20236030비동기 호출의 병렬 처리 질문입니다. [2]
2jw5/15/20236066Char 타입은 문자열 기본 타입이 맞나요? [2]
[1]