.NET의 일반 메서드에서 반환 유형을 추론할 수 없는 이유
.NET에서 일반 메서드를 사용하면 다음을 수행할 수 있는 코드를 만들 수 있습니다. 다양한 유형으로 작동합니다. 그러나 언어의 독특한 제한으로 인해 제네릭 메서드의 반환 유형이 유추되지 않습니다.
이유
이 제한의 기본 원칙은 "내부- 외부로" 유형 정보 흐름. 표현식을 평가할 때 유형 정보는 내부가 아닌 외부로만 전파됩니다. 이를 통해 컴파일러는 매개변수와 인수의 유형을 결정할 수 있지만 일반 메서드의 반환 값은 결정할 수 없습니다.
데모
다음 일반 메서드를 고려하세요.
static TDest Gimme<TSource, TDest>(TSource source) { return default(TDest); }
정수 인수를 사용하여 이 메서드를 호출하려고 하고 문자열 반환 값을 기대하면 컴파일러는 오류:
string dest = Gimme(5); // Error: The return type cannot be inferred
이는 컴파일러가 인수에만 기초하여 Gimme의 반환 유형을 결정할 수 없기 때문입니다. TDest의 유형을 추론하려면 먼저 반환 유형을 알아야 합니다.
의미 및 복잡성
유형 정보가 양방향으로 흐를 수 있다면 시나리오가 발생할 수 있습니다. 컴파일러는 극복할 수 없는 문제에 직면하게 됩니다. 다음 예를 고려하십시오.
결론
.NET의 일반 메서드에 대한 반환 형식 추론에 대한 제한은 임의적이지 않습니다. 이는 컴파일러가 복잡한 유형 추론 시나리오에 압도당하는 것을 방지하고 언어의 견고성을 보장하는 중요한 보호 장치입니다.
위 내용은 .NET에서 일반 메서드의 반환 유형을 추론할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!