.NET Generics에서 오버로드된 연산자 제약 조건 극복
.NET에서 제네릭 메서드에는 작동하는 형식에 대한 특정 제약 조건이 필요한 경우가 많습니다. 그러나 인터페이스가 연산자 오버로드를 수용할 수 없기 때문에 오버로드된 연산자가 있는 유형에 제약 조건을 적용하는 것은 어려울 수 있습니다.
이 질문은 오버로드된 연산자가 있는 유형, 특히 뺄셈을 허용하는 일반 메서드를 구현하는 데 사용할 수 있는 옵션에 대해 자세히 설명합니다.
제약사항 해결
아쉽게도 직접적인 해결책은 없습니다. 이 제약에. 연산자는 정적 엔터티이므로 제약 조건으로 표현할 수 없습니다. 또한 기존 기본 요소에는 이 동작을 에뮬레이션할 수 있는 특정 인터페이스 구현이 부족합니다.
.NET 3.5 이상의 접근 방식
그러나 .NET 3.5 및 3.5 및 그 이상에서 사용할 수 있는 해결 방법이 있습니다. 이후 버전:
T result = Operator.Add(first, second); // implicit <T>; here
static T Add<T>(T x, T y) { dynamic dx = x, dy = y; return dx + dy; }
대안: 인터페이스 기반 솔루션
또 다른 접근 방식은 원하는 연산자를 나타내는 메서드로 인터페이스를 만드는 것입니다.
interface ICalc<T> { T Add(T, T)() T Subtract(T, T)() }
이 방법은 일반적인 제약 조건을 사용하지 않지만 ICalc
결국 접근 방식의 선택은 프로젝트의 특정 요구 사항과 호환성 제약 조건에 따라 달라집니다.
위 내용은 .NET 일반 메서드에서 오버로드된 연산자를 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!