Microsoft MVP성태의 닷넷 이야기
C#12 기본 생성자가 뭔가 내부 필드를 만드는 것 같습니다. [링크 복사], [링크+제목 복사],
조회: 4021
글쓴 사람
영귤
홈페이지
첨부 파일
 
(연관된 글이 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()"가 맞습니다. 마찬가지로 정오표에 실었습니다.

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

NoWriterDateCnt.TitleFile(s)