C# 如何在C中实现Array.Copy#
我需要在函数中实现Array.Copy(Array sourceArray、int sourceIndex、Array destinationArray、int destinationIndex、int length) 它得到的数组是char[]数组这是我的实现,但它不起作用: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
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;
}