.NET 제네릭의 공분산, 반공분산 및 "in/out"에 대한 자세한 설명
공변성과 반공변성은 .NET 일반 인터페이스 및 대리자의 디자인에서 중요한 역할을 합니다. 다양한 시나리오에서 제네릭 형식을 안전하게 바꾸는 방법을 결정합니다.
공분산과 반공분산
공분산을 사용하면 기본 유형이 "반환 값"(예: 반환 값)인 경우 기본 유형 대신 더 "파생된"(보다 구체적인) 유형을 사용할 수 있습니다. 대조적으로, 반공변성은 원래 유형이 "입력"(예: 메소드 매개변수)으로만 사용되는 경우 원래 유형 대신 더 "기본"(덜 구체적인) 유형을 사용할 수 있도록 허용합니다.
'안'과 '밖'
'in' 및 'out' 키워드는 각각 공분산(covariance)과 반공변성(contravariance)의 약어입니다. 제네릭 유형이 반환 값으로만 나타나는 경우 "out"을 사용하고, 제네릭 유형이 메서드 매개 변수로만 나타나는 경우 "in"을 사용합니다.
관계 설명
List
일반 인터페이스 사용에 대한 자세한 설명
공분산과 반공분산을 더 깊이 이해하려면 다음 두 가지 일반적인 방법을 고려하세요.
<code>public Base DoSomething(int variable) public Derived DoSomethingElse(int variable)</code>
T를 반환하는 MyFunction(int 변수) 메서드가 있는 MyInterface
interface MyInterface<out T>
는 T가 반환 유형으로만 사용될 수 있음을 나타냅니다. Derived가 Base에서 파생된 유형이기 때문에 MyInterfaceinterface MyInterface<in T>
는 T가 메서드 매개변수로만 사용될 수 있음을 나타냅니다. MyInterface요약
공분산, 반공분산 및 "인/아웃"의 개념을 이해하는 것은 .NET에서 제네릭을 효과적으로 사용하는 데 중요합니다. 이를 사용하면 사용법에 따라 제네릭 유형이 올바르게 대체되는지 확인하여 유형이 안전한 코드를 만들 수 있습니다.
위 내용은 .NET Generics의 공분산, 반공변성 및 'in'/'out' 키워드는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!