-
기본 생성자는 C# 개발자에게 문제를 일으켰습니다.프로그래밍 2023. 12. 3. 18:43
원문 : 기본 생성자는 C# 개발자에게 문제를 일으켰습니다. (roundthecode.com)
readonly 생성자가 필요한 이유 입니다. (kotlin은 이미 지원하고 있습니다.)
읽기 전용 부분을 잃어버리는 것이 왜 문제입니까?
인스턴스는 다음 코드 조각에서 볼 수 있듯이 클래스의 모든 부분을 통해 변경할 수 있습니다.
public class AbcController(IServiceProvider serviceProvider, IAbcService abcService) : ControllerBase { [HttpGet] public IActionResult MyMethod() { var number = abcService.MyNumber(); abcService = null; var number2 = MyAbc(); return Ok(number); } public int MyAbc() { return abcService.MyNumber(); } }
이 경우 메서드는 .MyMethodNullReferenceException
그 이유는 매개 변수를 null로 설정 한 다음 매개 변수에서 메서드를 호출하는 메서드를 호출하기 때문입니다.abcServiceMyAbcMyNumberabcService
해당 단계에서 매개 변수에 대한 null 참조가 있으므로 예외가 발생합니다.abcService
따라서 런타임 예외가 throw될 가능성이 높아집니다.
'프로그래밍' 카테고리의 다른 글
DTO 클래스 대신 C# 레코드 사용 (0) 2023.12.03 NET 8 및 C# 12 - ref readonly 매개 변수 (1) 2023.12.03 기본 생성자는 C# 12에서 클래스 매개 변수를 추가합니다. (1) 2023.12.03 ORM ORm Orm omg... (1) 2023.11.14 코드가 충분하다면 괜찮습니다 (1) 2023.11.13