Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ulong[]至uint[]-这是一种良好的做法吗?_C# - Fatal编程技术网

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#中被破坏。读埃里克·利珀特的