더북(TheBook)

매개변수의 이름은 이 책의 다른 예와 달리 축약형을 사용했다. offsetBy 메서드의 두 번째 매개변수는 가능한 한 복사본이 생성되는 것을 피하기 위해서 in 매개변수로 선언했다.

이 같은 확장 메서드를 이용하면 코드를 좀 더 간단하게 작성할 수 있다. 이 확장 메서드를 사용할 때 조금 놀라운 부분은 일반적인 참조 매개변수와 달리 확장 메서드를 호출할 때에 명시적으로 ref 한정자를 쓰지 않아도 된다는 점이다. 다음 예제는 앞서 작성한 두 개의 확장 메서드를 사용한 예인데, 두 개의 백터를 생성한 후 첫 번째 벡터에서 두 번째 벡터만큼 떨어진 벡터를 계산해 벡터 자체와 그 크기를 출력한다.

예제 13-19 ref와 in을 사용하는 확장 메서드 호출 ▶ UsingVector3DExtensions.cs

var vector = new Vector3D(1.5, 2.0, 3.0);
var offset = new Vector3D(5.0, 2.5, -1.0);

vector.OffsetBy(offset);

Console.WriteLine($"({vector.X}, {vector.Y}, {vector.Z})");
Console.WriteLine(vector.Magnitude());

출력 결과는 다음과 같다.

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