C# 如何在C中实现Array.Copy#

C# 如何在C中实现Array.Copy#,c#,arrays,copy,C#,Arrays,Copy,我需要在函数中实现Array.Copy(Array sourceArray、int sourceIndex、Array destinationArray、int destinationIndex、int length) 它得到的数组是char[]数组这是我的实现,但它不起作用: private char[] ArrayCopier(char[] chars, int startIndex, int length) { char[] NewArray = n

我需要在函数中实现Array.Copy(Array sourceArray、int sourceIndex、Array destinationArray、int destinationIndex、int length)

它得到的数组是char[]数组这是我的实现,但它不起作用:

private char[] ArrayCopier(char[] chars, int startIndex, int length)
        {
            char[] NewArray = new char[length];
            int index = 0;

            for (int i = startIndex; i < length; i++)
            {
                NewArray[index] = chars[i];
            }

            return NewArray;
        }
private char[]ArrayCopier(char[]chars,int startIndex,int length)
{
char[]NewArray=新字符[长度];
int指数=0;
对于(int i=startIndex;i
在for循环中,您需要索引++;否则,它会将每个字符放在新数组的第一个位置

我还要检查您是否超出了源数组的边界

因此:

private char[]ArrayCopier(char[]chars,int startIndex,int length)
{
char[]NewArray=新字符[长度];
int指数=0;

对于(inti=startIndex;(i
private char[]ArrayCopier(char[]chars,int startIndex,int length)
{
//确保startIndex在给定数组的范围内
if(startIndex<0 | | startIndex>=字符长度)
抛出新的IndexOutOfRangeException();
//如有必要,请重新计算数组边界内的长度
if(起始索引+长度>字符长度)
长度=字符长度-起始索引;
var结果=新字符[长度];
for(int i=0;i
您忘了增加
索引
计数器。@davidivovar Ahh谢谢,但仍然不起作用:(和
i<(长度+起始索引)
private char[] ArrayCopier(char[] chars, int startIndex, int length)
        {
            char[] NewArray = new char[length];
            int index = 0;

            for (int i = startIndex; (i < length)&&(i<chars.length); i++)
            {
                NewArray[index] = chars[i];
                index++;

            }

            return NewArray;
        }