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

    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#에서는 변경되지 않을까 한다.

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