"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C#에서 공분산이 값 유형과 작동하지 않는 이유는 무엇입니까?

C#에서 공분산이 값 유형과 작동하지 않는 이유는 무엇입니까?

2025-03-25에 게시되었습니다
검색:216

Why Doesn't Covariance Work with Value Types in C#?

C# 공분산 및 비밀화 : 값 유형 제한

C#의 ienumerable 인터페이스는 공분산을 보여 주어 기본 유형 참조에 도출 된 유형 참조를 할당 할 수 있습니다. 그러나 이것은 가치 유형에는 적용되지 않습니다. ienumerable ienumerable 에 편집 오류가 발생합니다.

이 제한은 복싱 및 Unboxing에서 비롯됩니다. 복싱은 값 유형을 참조 유형 ( Object )로 변환하는 반면, Unboxing은 이것을 반전시킵니다. ienumerable 의 유형 매개 변수 t 는 참조 유형에서만 작동합니다. 값 유형의 ienumerable ienumerable 에 할당하려면 권투가 필요하며, 이는 값 유형에 대해 암시 적으로 지원되지 않습니다.

공분산 및 비밀화는 변환에 대한 일관된 가치 표현에 의존합니다. 그러나 가치 유형은 이러한 일관성을 유지하지 않습니다. 복싱은 그들의 표현을 바꾸어 잠재적으로 정체성 손실과 불안정성으로 이어지고, 공분산과 비밀의 과제의 원칙을 위반합니다.

Eric Lippert의 표현과 정체성에 관한 저술은 이러한 전환이 정체성 보존을 요구한다는 것을 강조합니다. 값 유형의 권투 프로세스는이 보존을 중단하기 때문에 공분산 및 비밀과 호환되지 않습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3