2011-02-03 47 views
5

我想這樣做C#鑄造名單<ushort>列出<short>

List<ushort> uList = new List<ushort>() { 1, 2, 3 }; 
List<short> sList = uList.Cast<short>().ToList(); 

,但我得到InvalidCastException的「指定強制轉換是無效的。」

我該如何快速高效地施放上述集合?

謝謝。

+1

[困惑Enumerable.Cast InvalidCastException的]的可能重複(http://stackoverflow.com/questions/445471/puzzling-enumerable-cast-invalidcastexception) – Ani 2011-02-03 16:21:56

+1

@Ani:我不會認爲這是重複的,因爲我知道你不能將`int`轉換爲`long`(它們的大小不同),但我希望從`ushort`到`short`的轉換是可能是因爲它們尺寸相同。換句話說,`(ushort [])(object)new short [] {0,-1}`是完全有效的C#。 – Gabe 2011-02-03 16:43:45

回答

7
List<short> sList = uList.Select(i => (short)i).ToList(); 
9

你可以使用ConvertAll:

List<short> sList = uList.ConvertAll(x => (short)x);