2016-07-29 4 views
0

을 사용하여 IntUInt으로 캐스팅 할 수없는 이유를 아는 사람이 있습니까?예기치 않은`지정된 캐스트가 유효하지 않습니다 .` 예외 (Linq)

var myIntList = new List<int>(); 

myIntList.Add(1); 
myIntList.Add(2); 
myIntList.Add(3); 

var myUIntList = myIntList.Cast<uint>().ToList(); 

IT는 지정한 캐스트가 유효하지 않습니다 발생합니다. Select()을 사용할 때 (ofcourse)을 사용할 수 있습니다.

var myIntList = new List<int>(); 

myIntList.Add(1); 
myIntList.Add(2); 
myIntList.Add(3); 

var myUIntList = myIntList.Select(i => (uint)i).ToList(); 

(이는 버그 미구현 기능입니까?)

답변

4

Enumerable.CastIEnumerable에 확장 방법합니다 (아닌 일반 인터페이스)로서 구현된다.

이 의미는 시퀀스의 값이 object에서 전송된다는 의미입니다. 즉, 복싱 및 언 박싱이 값 유형과 관련됩니다. 정확한 유형으로 만 unbox 할 수 있습니다. 예를 들어 :

int i = 1; 
object boxed = i; 

int unboxToInt = (int)boxed; // ok 
uint unboxToUint = (uint)boxed; // invalid cast exception 

당신은 권투 in the documentation에 대한 자세한 내용을보실 수 있습니다.

+0

그게 전부 확실합니다. 나는 약간의 독서를 할 것이다. –

관련 문제