我想这样做:
List<ushort> uList = new List<ushort>() { 1, 2, 3 };
List<short> sList = uList.Cast<short>().ToList();
但是我收到了“指定的转换无效”的InvalidCastException错误。
如何快速高效地对上述集合进行转换?
我想这样做:
List<ushort> uList = new List<ushort>() { 1, 2, 3 };
List<short> sList = uList.Cast<short>().ToList();
但是我收到了“指定的转换无效”的InvalidCastException错误。
如何快速高效地对上述集合进行转换?
int
强制转换为long
(它们的大小不同),但我希望可以从ushort
到short
进行强制转换,因为它们的大小相同。换句话说,(ushort[])(object)new short[] { 0, -1 }
是完全有效的C#代码。 - Gabe(short)((ushort)1)
和(long)((int)1)
(为了清晰而进行的冗余转换)都是有效的C#代码。问题与混合数字转换和拆箱有关。http://blogs.msdn.com/b/ericlippert/archive/2009/03/19/representation-and-identity.aspx - Ani(long)((int)1)
是一种转换,而(short)((ushort)1)
则是一种强制类型转换。它们在 C# 中具有相同的语法,但第一个会执行函数调用,而第二个则不会(或者不必要)。 - Gabe(short)(object)(ushort)1
会在运行时抛出异常。 - Ani