> 백엔드 개발 > C++ > 공분산과 비결정이 C#의 값 유형에서 작동하지 않는 이유는 무엇입니까?

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

Susan Sarandon
풀어 주다: 2025-01-30 21:16:10
원래의
160명이 탐색했습니다.

Why Don't Covariance and Contravariance Work with Value Types in C#?
C# 공분산 및 비밀 조정 : 값 유형 제한

c#의 공분산 및 비밀화 기능은 유연한 유형 할당을 가능하게합니다. 그러나 이러한 기능은 값 유형으로 작업 할 때 제한됩니다.

는 공분산을 보여 주어 객체 참조에 대한 참조의 할당을 허용합니다. 그림자와 같이 값 유형으로 확장되지는 않습니다 이 차이는 복싱에서 비롯됩니다. 기준 변수에 값 유형을 할당하려면 권투가 필요합니다. 새로운 힙으로 배치 된 객체를 만듭니다. 오버 헤드가 추가되고 잠재적 인 런타임 문제가 발생합니다 공분산을 사용하면 CLR (Common Language Runtime)은 박스 가치 신원의 보존을 보장 할 수 없습니다. 예를 들어,

를 수락하고 요소를 수정하는 메소드는 의 박스형 값이 변경되지 않은 상태로 유지되지 않습니다. 결과적으로 유형 안전을 유지하고 복싱 관련 오류를 방지하기 위해 C#의 값 유형에 대해 공분산 및 비밀화가 지원되지 않습니다.

위 내용은 공분산과 비결정이 C#의 값 유형에서 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿