>백엔드 개발 >C++ >C#에서 'var'에 익명 메서드를 직접 할당할 수 없는 이유는 무엇입니까?

C#에서 'var'에 익명 메서드를 직접 할당할 수 없는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-31 01:19:10255검색

Why Can't Anonymous Methods Be Assigned Directly to `var` in C#?

익명 메서드를 var에 할당할 수 없는 이유

제공된 코드에서 var 변수에 익명 메서드를 할당하면 컴파일에 실패합니다. 대리자 유형을 추론하는 데 모호성이 있기 때문입니다.

익명 메소드는 다음과 같습니다. Func와 같은 대리자 유형에 할당됩니다. 또는 액션. 그러나 var에 할당할 때 컴파일러는 사용할 대리자 유형을 결정할 수 없습니다. 이는 가능한 대리자 유형이 무한히 많고, 특히 람다의 경우 대리자 형식을 사용하려는 의도인지 표현식 트리 형식을 사용하려는 것인지 불분명하기 때문입니다.

또한 컴파일러가 대리자 유형을 사용하면 불일치가 발생할 수 있습니다. 예를 들어, var 할당이 성공적으로 컴파일되었다고 가정하면 다음 코드는 더 이상 의미가 없습니다.

var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) {
    return false;
};

Func<> .NET 3.5에서는 최대 4개의 인수만 허용하므로 유형 추론이 실제 동작과 일치하지 않습니다.

이 모호성을 해결하려면 익명 메서드를 변수에 할당할 때 대리자 유형을 명시적으로 지정해야 합니다. 이렇게 하면 코드의 명확성과 일관성이 보장됩니다.

위 내용은 C#에서 'var'에 익명 메서드를 직접 할당할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.