Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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#使用指针对整数数组进行除法_C#_Arrays_Pointers_Integer - Fatal编程技术网

C#使用指针对整数数组进行除法

C#使用指针对整数数组进行除法,c#,arrays,pointers,integer,C#,Arrays,Pointers,Integer,所以我有一个快速排序算法,我必须把我的整数数组一分为二,然后递归地调用这两个数组 partition(array,lower); partition(&array[lower + 1], array.Length - lower - 1); 但c#不会接受该代码,即使我尝试向分区类添加不安全的代码,所以我想知道必须做什么才能使其工作 也许我可以不使用指针来修复它,但我想学习,这样每当我遇到这样的问题时,我就不必为它更改整个代码。要使用不安全的代码,需要两件事: 用标记不安全代码(正如您

所以我有一个快速排序算法,我必须把我的整数数组一分为二,然后递归地调用这两个数组

partition(array,lower);
partition(&array[lower + 1], array.Length - lower - 1);
但c#不会接受该代码,即使我尝试向分区类添加不安全的代码,所以我想知道必须做什么才能使其工作


也许我可以不使用指针来修复它,但我想学习,这样每当我遇到这样的问题时,我就不必为它更改整个代码。

要使用不安全的代码,需要两件事:

  • 用标记不安全代码(正如您所说的)
  • 通过配置
  • 林克怎么样

    array.Take(lower);
    array.Skip(lower);
    

    数组创建
    子数组的简便方法

        private static void Main()
        {
    
            int[] array = Enumerable.Range(1, 10).ToArray();
            int lower = 5;
            int[] array1 = array.SubArray(0, lower);
            int[] array2 = array.SubArray(lower, array.Length - lower);
        }
    
        public static T[] SubArray<T>(this T[] source, int sourceIndex, int length)
        {
            T[] result = new T[length];
            Array.Copy(source, sourceIndex, result, 0, length);
            return result;
        }
    
    private static void Main()
    {
    int[]数组=可枚举的.Range(1,10).ToArray();
    int较低=5;
    int[]array1=数组。子数组(0,更低);
    int[]array2=array.SubArray(更低,array.Length-lower);
    }
    公共静态T[]子数组(此T[]源,int sourceIndex,int length)
    {
    T[]结果=新的T[长度];
    复制(源、源索引、结果、0、长度);
    返回结果;
    }
    
    “c#不会接受该代码”。。。上面写着“我不接受代码”吗?也许相反,它说的是更具信息性的东西?你不需要指针和不安全的代码。您可以通过稍微更改方法
    分区(数组,0,更低)来实现同样的功能
    分区(数组,下+1,array.Length-lower-1)其他替代方案,如形成子数组或Linq,可能会影响性能。它有助于忘记c#中的指针,只是复制数据或生成迭代器;i、 e.IEnumerable’s但这就像用大炮杀死苍蝇:真的,首先你写的代码少了(总是好的)。其次,如果您使用了完美迭代器的功能,为什么要重新实现它?第三,迭代器不复制数据,它描述了如何遍历数据源;所以您已经优化了内存分配。