我需要将int[]
数组转换为数组ushort[]
才能使用这Array.Copy()
两种数组中的方法。
我应该使用哪种方法?
var arr = Array.ConvertAll(inputs, val => checked((ushort)val));
这里的好处是它从一开始就Array.ConvertAll
对目标数组进行了正确的大小调整,因此它从不分配多个数组,并且可以方便地使用。
如果检测到溢出,checked
here 会导致int
toushort
转换抛出异常;默认情况下不这样做。
从 int 数组获取 ushort 数组的简单方法是:
public static void Main(string[] args)
{
int[] intArr = new int[5]{1,2,3,4,5}; // Creates an array of ints
ushort[] ushortArr = new ushort[5]; // Creates an array of ushorts
// Copy the int array to the ushort array
for(int i=0; i<intArr.Length; i++){
ushortArr[i] = (ushort)intArr[i];
}
// Prints the ushort array
foreach(ushort u in ushortArr){
Console.Write(u+", ");
}
}
这个程序的输出是:
1, 2, 3, 4, 5,
注意:您需要确保 ushort 数组的长度与 int 数组的长度相同。
我相信这是一个非常简单的解决方案。我希望它有帮助:)
有更清洁的选择,但假设你需要在 int 不能是无符号短时做一些事情:
public ushort[] ToUnsignedShortArray(int[] intArray)
{
if (intArray == null)
{
return new ushort[0];
}
var shortArray = new ushort[intArray.Length];
for (var i = 0; i < intArray.Length; i++)
{
// add your logic for determining what to do if the value can't be an unsigned short
shortArray[i] = (ushort)intArray[i];
}
return shortArray;
}