C# 일반 생성자 및 매개변수 제약 조건
C#의 일반 제약 조건을 사용하면 유형 매개변수에 대한 조건을 지정할 수 있습니다. "new()" 제약 조건은 형식에 매개 변수 없는 생성자가 있는지 확인하는 일반적인 제약 조건 중 하나입니다. 그러나 일부 상황에서는 생성자 매개변수에 대해 보다 구체적인 제약 조건이 필요할 수 있습니다.
질문:
특정 매개변수 유형을 가진 생성자가 있어야 하는 일반 제약 조건을 지정할 수 있나요? 예를 들어, 일반 유형 T가 "float[,]" 매개변수를 허용하는 생성자를 갖도록 제한할 수 있습니까?
아래와 같이 이러한 제약 조건을 직접 구현하려고 하면 컴파일이 실패하게 됩니다.
<code class="language-csharp">public class A { public static T Method<T>(T a) where T : new(float[,] u) { return new T(new float[0, 0]); } }</code>
정답:
안타깝게도 이러한 제약 조건은 C#에서 직접 지정할 수 없습니다. 그러나 해결 방법이 있습니다.
해결 방법:
일반적인 해결 방법은 지정된 매개변수를 사용하여 필수 유형의 개체를 생성하는 대리자를 제공하는 것입니다. 그런 다음 이 대리자를 일반 메서드에 매개 변수로 전달할 수 있습니다.
<code class="language-csharp">public class A { public static void Method<T>(T a, Func<float[,], T> creator) { // ... 执行某些操作 ... } }</code>
이 접근 방식을 사용하면 특정 값으로 개체를 인스턴스화하도록 대리자를 사용자 정의할 수 있으므로 생성자 매개 변수를 유연하게 지정할 수 있습니다.
위 내용은 C# 일반 제약 조건이 특정 매개 변수 유형을 가진 생성자를 지정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!