>백엔드 개발 >C++ >왜 '목록'이 C#의 '목록'변수에 직접 할당 할 수 없습니까?

왜 '목록'이 C#의 '목록'변수에 직접 할당 할 수 없습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-28 13:31:09888검색

Why Can't a `List` Be Directly Assigned to a `List` Variable in C#?
왜 c#에서 a

에 할당 될 수 없는지? c#에서 List<string>에 직접 할당하면 컴파일러 오류가 발생합니다. 암시 적 변환은 허용되지 않으며 List<object>를 사용한 명시 적 주조도 실패합니다. 이유 : 이 제한은 유형 안전 때문입니다. 그러한 임무가 허용되었다고 상상해보십시오. 그런 다음

(예 : 정수 또는 사용자 정의 클래스) 이외의 유형의 객체를 List<string>에 추가 할 수 있습니다. 그러나이 List<object>는 원래 a (List<object>)였습니다. 참조를 사용 하여이 목록에서 요소에 액세스하려고하면 비 스트링 요소가 발생할 때

가 발생합니다. 컴파일러는 할당을 허용하지 않음 으로써이 잠재적 런타임 오류를 방지합니다. 해결 방법 :

직접 할당은 불가능하지만 대체 방법을 사용하여 원하는 효과를 달성 할 수 있습니다. 반복 복사 :

가장 간단한 접근 방식은 를 통해 반복하고 각 요소를 새로운 . 에 개별적으로 추가하는 것입니다.

string linq : List<object>보다 간결한 솔루션은 linq의 List<object> 메소드를 사용합니다 : List<string> string System.InvalidCastException 리버스 캐스팅 :

리버스 캐스트 (

)에서 에 이르기까지 다른 문제는 다른 문제입니다. 이것은 일반적으로 의 모든 요소가 실제로 라는 것을 절대적으로 확신하지 않는 한 일반적으로

허용되지 않습니다. 이것이 사실이 아닌 경우 캐스트를 시도하면 런타임 예외가 발생합니다. C# 이러한 시나리오를 방지하기 위해 유형 안전을 시행합니다. 문자열 요소 만 안전하게 필터링하고 시전하려면 점검을 수행하거나 LINQ의 메소드를 사용해야합니다. 따라서 역 작동이 유사 해 보일 수 있지만 C#의 기본 유형 안전 메커니즘은 간단한 작동을 방지합니다. 일반 목록 및 유형 변환으로 작업 할 때는 요소 유형을 신중하게 고려하는 것이 중요합니다.

위 내용은 왜 '목록'이 C#의 '목록'변수에 직접 할당 할 수 없습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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