Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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# 将int[]数组转换为ushort[]数组_C#_Arrays_Int_Ushort - Fatal编程技术网

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;
    }