더북(TheBook)

이미 Deconstruct 인스턴스 메서드를 가지고 있는 타입에 대해서도 확장 메서드 형태의 Deconstruct 메서드를 추가하여 구현할 수도 있다. 분해 작업을 수행할 때 적절한 인스턴스 메서드 형태의 Deconstruct가 없다면 일반 메서드를 호출하듯이 확장 메서드로 구현한 Deconstruct 메서드를 호출한다.

확장 메서드로 구현한 Deconstruct는 인스턴스 메서드와 다르기 때문에 자연스럽게 다음과 같은 제약이 생긴다.

호출 측 코드에 접근 가능해야 한다.

첫 번째 매개변수(확장 메서드의 대상)를 제외한 다른 모든 매개변수는 out 매개변수여야 한다.

적어도 두 개 이상의 out 매개변수를 가져야 한다.

제네릭 메서드가 될 수 있지만, 첫 번째 매개변수인 호출 수신자(receiver of the call)에 대해서만 타입 추론이 수행된다.

메서드를 제네릭으로 선언할 수 있는지 나타내는 규칙은 특히나 자세히 살펴볼 필요가 있는데, Deconstruct에 대한 오버로드를 작성할 때 매개변수의 개수를 달리해야 하는 이유와 연관되어 있기 때문이다. 어찌 되었건 가장 중요한 핵심은 컴파일러가 Deconstruct 메서드를 어떻게 다루는지와 관련되어 있다는 점이다.

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