더북(TheBook)

다음은 유효하지 않은 예다.

static void Method(this ref string target)  ----- 참조 매개변수인 target이 참조 타입 
static void Method<T>(this ref T target)
    where T : IComparable<T>
static void Method<T>(this in string target)  ----- in 매개변수인 target이 참조 타입
static void Method<T>(this in T target)
    where T : struct

 


➊ 참조 매개변수인 target의 타입 매개변수가 struct 제약 조건을 가지지 않음
➋ in 매개변수인 target이 타입 매개변수를 가짐

inref를 사용할 때의 차이에 주의해야 한다. ref를 사용할 때는 struct 제약 조건이 있어야만 사용할 수 있다. in을 사용할 때도 제네릭 타입을 사용할 수 있지만 타입 매개변수를 가질 수는 없다(유효한 예 중 마지막 예). 현재까지는 제네릭 in 매개변수를 사용할 때 유용할 것으로 생각되는 readonly struct의 형태로 제약 조건을 지정할 수 없다. 이는 다음 버전의 C#에서는 변경되지 않을까 한다.

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