为了从这两种类型的数组中使用方法int[]
,我需要将ushort[]
数组转换为Array.Copy()
数组。
我应该使用哪种方法?
var arr = Array.ConvertAll(inputs, val => checked((ushort)val));
Array.ConvertAll
的优点在于,它可以正确调整目标数组的大小[[从一开始,因此它永远不会分配多个数组,并且可以方便地使用。
checked
在此导致如果检测到溢出,则int
到ushort
转换将引发异常;默认情况下,这是not
。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数组的长度相同。我相信这是一个非常简单的解决方案。希望对您有所帮助:)
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;
}