class ConferenceRegistration { public string CampaignSource { get; set; } = "organic";
public string FirstName { get; set; } = null!; public string? MiddleName { get; set; } public string LastName { get; set; } = null!; public string Email { get; set; } = null!;
→ 새로운 생성자에서 null!를 사용하자.
public DateTimeOffset CreatedOn { get; set; } }
느낌표(bang) 연산자(!)는 컴파일러에게 정확히 “내가 무엇을 하고 있는지 알고 있다”라고 말한다. 이 경우, “이 클래스를 만든 후 즉시 해당 속성을 초기화할 것이다. 그렇지 않으면 nullability 검사가 전혀 작동하지 않는다는 것을 받아들인다”라고 말한다. 기본적으로 이렇게 속성을 즉시 초기화하겠다는 약속을 지킨다면 여전히 무효성을 보장할 수 있다.
팀원 모두가 이를 납득하지 못할 수도 있고 나중에 결국 속성을 초기화할 수도 있기 때문에 이는 살얼음 위를 걷는 것과 같다. 여러분이 이러한 위험을 관리할 수 있다면 이 방식을 고수해도 된다. 객체에 대한 기본 생성자와 설정할 수 있는 속성이 필요한 Entity 프레임워크와 같은 일부 라이브러리에서는 불가피할 수도 있다.