我偶然发现了这个问题并看到了这个解决方案:
ulong[] ulongArray = { 1, 2, 3, 4 };
uint[] uintArray = null;
uintArray = (uint[]) (object) ulongArray;
ulongArray = (ulong[])(object) uintArray;
我想知道你是怎么做到的?对我来说有点奇怪..
答案 0 :(得分:7)
虽然会编译,但它会在执行时抛出异常。这两种类型不兼容。
类似的情况将是:
uint[] uintArray = { 1, 2, 3, 4 };
int[] intArray = (int[]) (object) uintArray;
将工作 - CLR很乐意将uint[]
引用视为int[]
引用,即使C#不是。{ (枚举类型数组及其底层整数类型之间的转换也是如此。)
我会谨慎使用它,只是为了让任何阅读代码的人感到惊讶 - 但在某些情况下可能是合适的。
答案 1 :(得分:1)
这应该有效:
ulong[] ulongArray = { 1, 2, 3, 4 };
uint[] uintArray = ulongArray.Select(u => (uint) u).ToArray();