Generic 차이 : 목록에 값을 할당합니다
질문 및 코드 예
다음 코드를 고려하십시오
<p>
이 예에서 런타임 확인으로 인해 기린 배열을 동물 어레이에 할당하는 것이 효과적입니다. 그러나 목록 의 분포는 <strong>를 목록에 배정하면 컴파일 중에 오류가 발생합니다. </strong>
다른 및 보안 문제 </p> <p>
이 문제는 일반 유형의 분산 개념과 관련이 있습니다. 조정은 기본 유형 위치에서 파생 유형을 사용할 수 있으며 인버터는 파생 유형 위치에서 기본 유형을 사용할 수 있습니다. 위의 예에서, </p> 목록에 값을 할당하는 목록은 조정 된 변경으로 간주됩니다. <p>
<assign> 그러나이 과제는 보안 문제를 일으킬 수 있습니다. 새로운 라이온 객체가 동물 명단에 추가되면 동물 목록 유형의 안전 유형을 위반하더라도 편집 점검없이 AnimalsList2에 할당 할 수 있습니다. <strong>
<in> C# </in></strong>의 솔루션
런타임 중에 실행 중에 배열을 사용하십시오 : </assign></p>
배열은 런타임 중 참조 유형 분산을 지원하므로 파생 유형 배열을 기본 유형 배열에 할당 할 수 있습니다. <p>
C# 4 보안 제곱 차이 :
C# 4는 인터페이스의 보안 분산 및 위탁에 대한 지원을 소개합니다. func <t>는 t의 조정 된 변화이며, 행동 </t></p>는 T에서 반전됩니다. <pre class="brush:php;toolbar:false"><code class="language-csharp">class Animal { }
class Giraffe : Animal { }
static void Main(string[] args)
{
// 数组赋值有效,但是...
Animal[] animals = new Giraffe[10];
// 隐式转换失败
List<Animal> animalsList = new List<Giraffe>(); //编译错误
// 显式转换也失败
List<Animal> animalsList2 = (List<Animal>) new List<Giraffe>(); //编译错误
}</code></pre>
C# 2 메소드 :
C# 2에서는 list .convertAll을 사용하여 필요한 유형의 새 목록을 만들 수 있습니다. <giraffe>
결론 <animal>
<iance iance> C#분산 문제는 일반 할당 중 유형 안전을 유지하는 것의 중요성을 강조합니다. 어레이 또는 런타임 검사 수는 안전하지 않은 사각형을 달성하는 데 사용될 수 있지만 인터페이스 및 텐퍼스와의 보안 차이는 컴파일 중에 올바른 유형의 유형을 보장 할 수 있습니다. C#의 초기 버전의 경우 대체 솔루션으로 List <p> .convertAll을 사용할 수 있습니다. <strong></strong></p></iance></animal></giraffe>
위 내용은 C#에서 목록에 목록을 할당 할 수없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!