其实很简单,能像c++那样通过数组的地址指针选择开始复制的位置,比如
int buffer[]=new int[10000];
memset(buffer,0,100);
memcpy(buffer+100,srcbuf,9900);
在c#下我只会新建一个数组,然后用Array.CopyTo()来实现,效率差很多,希望各位给指点下

解决方案 »

  1.   

    C#中Array.Copy()方法有四种重载,其中有一个重载可以指定从数组的第几个元素开始复制,复制多少个。
      

  2.   

    http://www.bsdlover.cn/html/1/1-1831.html
    可以看下这个,写的很详细
      

  3.   

    public virtual void CopyTo(
    int index,
    Array array,
    int arrayIndex,
    int count
    )
     
    Visual C++ 
    public:
    virtual void CopyTo(
    int index, 
    Array^ array, 
    int arrayIndex, 
    int count
    )
     
    J# 
    public void CopyTo(
    int index,
    Array array,
    int arrayIndex,
    int count
    )
     
    JScript 
    public function CopyTo(
    index : int, 
    array : Array, 
    arrayIndex : int, 
    count : int
    )
     参数
    index
    类型:System..::.Int32源 ArrayList 中复制开始位置的从零开始的索引。array
    类型:System..::.Array作为从 ArrayList 复制的元素的目标位置的一维 Array。Array 必须具有从零开始的索引。arrayIndex
    类型:System..::.Int32array 中从零开始的索引,在此处开始复制。count
    类型:System..::.Int32要复制的元素数。这个是ArrayList的,
    Array的没那么好用public void CopyTo(
    Array array,
    long index
    )
     
    Visual C++ 
    [ComVisibleAttribute(false)]
    public:
    void CopyTo(
    Array^ array, 
    long long index
    )
     
    J# 
    /** @attribute ComVisibleAttribute(false) */
    public void CopyTo(
    Array array,
    long index
    )
     
    JScript 
    public function CopyTo(
    array : Array, 
    index : long
    )
     参数
    array
    类型:System..::.Array一维 Array,它是从当前 Array 复制的元素的目标位置。index
    类型:System..::.Int64一个 64 位整数,它表示 array 中复制开始处的索引。
      

  4.   

    是我没说清楚吧,我不想用这个方法,因为在循环中效率很低,
    我要实现的是这样的C++代码
    int buffer[]=new int[10000];
    memset(buffer,0,100);
    GetBuffer(buffer+100,9900);
    只是我在c#中是用Array.CopyTo()来实现的,我想提高效率,不知道该怎么做
      

  5.   

    GetBuffer
    memset那你可以把这两个C++的引到C#里用
      

  6.   

       C#中好像是不可以直接使用指针的,因此如果你要把C++、C里面的思想完全照搬过来用,有的时候可能会碰到很大的障碍,毕竟是不同的语言。从效率上来讲它肯定不如C++和C,如果楼主执着的追求效率,可能会丧失掉OOP的很多东西。当然这只是我的个人观点,希望对楼主有用。
      

  7.   

    GetBuffer是调用的dll库中的函数,改不了