C# ulong[]至uint[]-这是一种良好的做法吗?
我仔细思考了这个问题,并看到了这个解决方案:C# ulong[]至uint[]-这是一种良好的做法吗?,c#,C#,我仔细思考了这个问题,并看到了这个解决方案: ulong[] ulongArray = { 1, 2, 3, 4 }; uint[] uintArray = null; uintArray = (uint[]) (object) ulongArray; ulongArray = (ulong[])(object) uintArray; 我想知道你是不是这样做的?我觉得有点奇怪。虽然它将编译,但它将在执行时抛出异常。这两种类型就是不兼容 类似的情况将是: uint[] uintArray
ulong[] ulongArray = { 1, 2, 3, 4 };
uint[] uintArray = null;
uintArray = (uint[]) (object) ulongArray;
ulongArray = (ulong[])(object) uintArray;
我想知道你是不是这样做的?我觉得有点奇怪。虽然它将编译,但它将在执行时抛出异常。这两种类型就是不兼容 类似的情况将是:
uint[] uintArray = { 1, 2, 3, 4 };
int[] intArray = (int[]) (object) uintArray;
这将起作用-CLR很乐意将uint[]
引用视为int[]
引用,即使C#不是。(枚举类型数组与其基础整型数组之间的转换也是如此。)
我会小心使用它,只是为了让阅读代码的人感到惊讶——但在某些情况下,它可能是合适的。这应该可以:
ulong[] ulongArray = { 1, 2, 3, 4 };
uint[] uintArray = ulongArray.Select(u => (uint) u).ToArray();
这就像在旧的C-days中使用
void*
。如果你确切地知道自己在做什么,那就好了。否则就不好了。将它复制粘贴到新控制台模式应用程序的Main()方法中,然后看着它收缩、冒出一股烟然后死去。数组协方差在C#中被破坏。读埃里克·利珀特的