IReadOnlyCollection
으로 변환하려고 할 때 컴파일러가 다르게 처리하는 다른 컬렉션 (모두 IReadOnlyCollection
인터페이스를 구현하는 컬렉션)은 왜 다릅니 까?/Stack<int>
Queue<int>
이/... 암시 IReadOnlyCollection<int>
로 변환 할 수 없습니다IReadOnlyCollection에 대한 암시 적/명시 적 캐스트 혼동
유형 : 나는 .NET 4.5으로 VisualStudio 2015
위의 경우에서 컴파일러 오류가 사용하고
IReadOnlyCollection<int> a = new List<int>(); // everything fine
IReadOnlyCollection<int> b = new HashSet<int>(); // compiler wants me to cast
IReadOnlyCollection<int> c = new Stack<int>(); // compiler wants me to cast
IReadOnlyCollection<int> d = new Queue<int>(); // compiler wants me to cast
IReadOnlyCollection<int> e = new LinkedList<int>(); // compiler wants me to cast
IReadOnlyCollection<int> f = new SortedSet<int>(); // compiler wants me to cast
이있다 . 명시 적 변환이 존재합니다. 캐스트가 누락 되었습니까?
(이것은 실제 텍스트 아니지만, 난 당신이 날 여기에 독일의 텍스트를 복사 - 붙여 넣기 싶지 않을 것이다 생각합니다.)나는
IReadOnlyCollection<int> d = new Queue<int>() as IReadOnlyCollection<int>;
또는하여 캐스트를 할 경우 by
IReadOnlyCollection<int> d = (IReadOnlyCollection<int>)new Queue<int>();
모든 것이 좋습니다. 컴파일이나 런타임 오류가 발생하지 않습니다.
IReadOnlyCollection은 .NET 4.5부터 알고 있습니다. – Kjara
'List'는 일반적인 클래스입니다. 예를 들어'LinkedList'는 List 클래스의 하위 클래스입니다. 그것은 상속 문제일지도 모르지만 그 답을 배우고 싶습니다. – pilkington
나는 이것을 재현 할 수 없다. 아마도 우리에게 한 가지 단서가 될 수있다. 컴파일러가 무엇을 오류나 경고로 말하고 있는지 말해 줄 수 있을까? –