이진 연산자를 선언 할 때 적어도 하나의 피연산자 유형이 포함 유형이어야합니다. 이것은 일반적으로 좋은 디자인 결정이라고 들립니다. 그러나 다음 코드가이 오류를 일으킬 것으로 예상하지 않았습니다.Generics 및 "이항 연산자의 매개 변수 중 하나가 포함 유형이어야합니다."오류
public class Exp<T>
{
public static Exp<int> operator +(Exp<int> first, Exp<int> second)
{
return null;
}
}
이 연산자의 문제점은 무엇입니까? 왜이 경우 C#의 연산자 오버로딩 제한에 해당합니까? 이런 종류의 선언을 허용하는 것이 위험할까요?
여기서 문제는 피연산자가 유형을 포함하는 것과 관련이 없으며 위험 할 수 있지만 "특수화"가 허용되지 않는다는 것입니다. – nakhli
예. 당신이하려는 것은 C++에서 직접 가능하지 않은 C++ * 템플릿 전문화 *와 완전히 비슷하게 보입니다. [this] (http://stackoverflow.com/questions/600978/how-to-do-template-specialization-in-c)를보십시오. –