|
|
2022-3-26 16:40:21에 게시됨
|
|
|
|

C# 8.0 이전에는 모든 참조 타입이 null일 수 있었습니다. 널 참조 유형은 C# 8.0에서 도입된 기능 집합을 의미하며, 다음과 같이 사용할 수 있습니다코드가 런타임 스로우를 유발할 가능성을 최소화하세요。 nullable 참조 타입은 이러한 예외를 피하는 데 도움이 되는 세 가지 기능을 포함하며, 그 중 하나는 참조 타입을 명시적으로 nullable로 표시할 수 있는 기능입니다:
- 변수가 참조되지 않기 전에 null인지 판단하기 위한 최적화된 정적 흐름 분석.
- API에 주석을 달아 Stream Analytics가 널 상태를 결정하도록 하는 속성들입니다.
- 개발자가 변수의 예상 null 상태를 명시적으로 선언할 수 있는 변수 주석입니다.
기존 프로젝트에서는 기본적으로 널 상태 분석과 변수 주석이 비활성화되어 있어 모든 참조 타입은 여전히 공백 가능합니다. .NET 6부터는 이 기능들이 기본적으로 신규 프로젝트에 대해 활성화됩니다.
문서조사:하이퍼링크 로그인이 보입니다.
null이 될 수 있는 참조 타입이 무엇을 해야 하는지런타임에 System.NullReferenceException을 던질 가능성을 최소화하세요。
제가 .NET 6로 개발 중인 프로젝트에서, 새로운 속성에 대해 이름 속성을 생성했는데, 이 속성에 다음과 같은 경고가 뜹니다:
생성자를 종료할 때, 비공무(non-nullable) 속성 "Name"은 비공백(non-null) 값을 포함해야 합니다. 속성을 할 수 있는 것으로 선언하는 것을 고려해 보세요.
경고이긴 하지만 매우 짜증납니다! 이 경고를 어떻게 고칠 수 있나요? 할당의 기본 값은 빈 문자열이며, 코드는 다음과 같습니다:
즉, 속성이 수동으로 할당되지 않은 경우, 속성의 기본 값은 빈 문자열입니다.
국소 변수를 사용할 때,실이 어떤 종류인가요? 경고를 생성할 수도 있습니다, 아래 그림에서 볼 수 있습니다:
해결책: 변수가 null인지 확인한 후 사용 시 아래 코드를 실행하지 마세요, 아니면 그렇게 생각하실 수 있습니다변수는 결코 null이 될 수 없습니다, 를 사용할 수 있습니다.ArgumentNullException.ThrowIfNull(assemblyFullName); 경고도 삭제될 수 있습니다! 즉, 변수가 null이면 런타임 중에 바로 예외를 던집니다!
요약: C# 8.0이 이 기능을 도입했으며, 개인적으로는 개발자들의 엄격성을 높이고 저수준 실수를 방지하기 위한 것이라고 생각합니다.
영(null)일 수 있는 더 많은 방법 해법은 다음을 참고하시기 바랍니다:하이퍼링크 로그인이 보입니다.
|
이전의:현재 프로젝트의 Git의 원격 주소를 조회하세요다음:ASP.NET 코어(12개) 프론트엔드 JS, CSS 번들링, 압축
|