더북(TheBook)

대상 타입을 값 타입으로 제한한 데는 크게 두 가지 이유가 있다.

이 기능 자체가 값 타입이 복사될 때 발생하는 비용을 피하기 위한 기능이기 때문이다. 참조 타입에 대해서는 아무런 이득이 없다.

첫 번째 참조 매개변수에 대해 참조 타입을 허용한다면, 이 매개변수에 null 참조를 사용할 수도 있어야 한다. 만약 이를 허용하면, C# 개발자나 개발 도구가 가정하고 있는 매우 기초적인 특성이 달라진다. 즉, x.Method()처럼 호출할 때(x는 참조 타입) xnull이 될 수 없다는 매우 기초적인 가정이 무너진다.

확장 메서드에 refin이 많이 사용될 것 같지는 않다. 하지만 언어의 일관성 차원에서 보자면 마땅히 지원되어야 하는 부분이다.

이 기능은 이 장에서 다루었던 다른 기능들과 조금 차이가 있다. 정리 차원에서 다시 한 번 살펴보자.

참조 지역 변수

참조 반환

참조 지역 변수와 참조 반환의 읽기 전용 버전

in 매개변수: 참조 매개변수의 읽기 전용 버전

읽기 전용 구조체: 이는 복사본이 생성되는 것을 피하기 위해서 in 매개변수, 읽기 전용 참조 지역 변수, 읽기 전용 변환을 허용한다.

확장 메서드의 대상 타입에 대해 참조 매개변수와 in 매개변수 허용

참조 매개변수를 시작으로 이 개념을 어떻게 확장하여 사용할 수 있을지를 고민해 봤다면, 이 목록에 나열한 내용과 유사한 내용들을 고민했을 것이다. 다음으로 알아볼 내용은 유사 참조 구조체에 대한 내용이다. 이는 앞서 나열한 내용 전체와 관련이 있지만, 마치 새로운 타입처럼 보이기도 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.