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