C# 将int[]数组转换为ushort[]数组
我需要将C# 将int[]数组转换为ushort[]数组,c#,arrays,int,ushort,C#,Arrays,Int,Ushort,我需要将int[]数组转换为ushort[]数组,以便从这两种类型的数组中使用方法array.Copy() 我应该使用哪种方法?var arr=Array.ConvertAll(输入,val=>checked((ushort)val)); 这里的Array.ConvertAll的优点是它从一开始就正确地调整了目标数组的大小,因此它从不分配多个数组,并且可以方便地使用 如果检测到溢出,此处选中的会导致int到ushort转换引发异常;默认情况下不会执行此操作。从int数组获取ushort数组的简
int[]
数组转换为ushort[]
数组,以便从这两种类型的数组中使用方法array.Copy()
我应该使用哪种方法?var arr=Array.ConvertAll(输入,val=>checked((ushort)val));
这里的Array.ConvertAll
的优点是它从一开始就正确地调整了目标数组的大小,因此它从不分配多个数组,并且可以方便地使用
如果检测到溢出,此处选中的
会导致int
到ushort
转换引发异常;默认情况下不会执行此操作。从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+", ");
}
}
注意:您需要确保ushort数组的长度与int数组的长度相同
我相信这是一个非常简单的解决办法。
我希望它能有所帮助:)有更干净的选择,但是假设你需要做一些事情,当int不能是无符号的short时:
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;
}
public ushort[]ToUnsignedShortArray(int[]intArray)
{
if(intArray==null)
{
返回新的ushort[0];
}
var shortArray=new-ushort[intArray.Length];
对于(变量i=0;i
循环是一种公认的在数组或列表上迭代的方法。我怀疑是否有预先制定的实现,因为您需要处理不适合ushort
的int
值。因此,您需要实现错误处理。只要您只有基元类型,就会自动拥有数据的副本,因此您甚至不需要Array.copy()
代码>,编译器将为您计算长度,如果您说new-ushort[intar.length]
,则无论您如何更改intArr
的内容,它都会自动获得正确的长度。
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;
}