2 개의 배열을 취하고 함께 추가하는 메서드를 만들고 있습니다. (저는 초보자이며 이것은 학교 과제이며 일부 사람들은 학교 질문을보기를 싫어하지만 이미 많은 일을 해왔습니다. 지금 막 붙어 있습니다.)두 개의 배열을 내 메서드와 함께 추가하십시오.
내가 이전에했던이 다른 방법을 참조하여이 방법 메신저에서public static int[] Concat(int[] array1, int[] array2) //array1 = 1, 2, 3, 4, 5 array2 = 6, 7, 8, 9, 10.
{
int i = array1.Length + 1;
int[] array3 = new int[array1.Length + array2.Length];
Class1.CopyTo(array1, array3, 0);
Class1.CopyTo(array2, array3, i);
Class1.PrettyPrint(array3);
return array3;
}
:
public static int[] CopyTo(int[] arr1, int[] arr2, int start)
{
for(int i = 0; i < arr1.GetLength(0); i++)
{
if (start <= i)
{
arr2[i] = arr1[i];
}
}
return null;
}
이 사람은 다른 배열로 배열의 인덱스를 복사합니다. 시작 변수는 내가 처음 복사를 시작할 인덱스입니다.
public static int[] PrettyPrint(int[] intArray)
{
string result = string.Join(", ", intArray);
Console.WriteLine(result);
return null;
}
그리고 문자열로 배열을 인쇄합니다.
문제점은 Concat 메소드에 있습니다. 첫 번째 복사본에 사용할 수 있습니다. array1을 array3에 복사합니다.
Class1.CopyTo(array1, array3, 0);
그러나 제 2 어레이의 경우, 아무것도 추가하지 않고 I 문자열로 그것을 입력으로부터 얻을 모두이다
1, 2, 3, 4, 5, 0, 0, 0, 0 , 0
왜 첫 번째 복사본 만 작동하는지 이해할 수 없습니다.
추가 질문. 내 메인 프로그램 탭에서 더 이상 내 클래스 Class1 lab2 = new Class1();
인스턴스로 이러한 메소드를 참조 할 수 없습니다. 하지만 lab2 대신 Class1을 사용하여 호출해야했습니다 (다른 방법으로도 작동했습니다). 동일한 클래스의 다른 메서드 내에서 메서드를 호출하려면 "정적"을 추가하고 "정적"을 추가하여 주 프로그램 탭에서 메서드를 호출하는 방법을 변경해야했습니다. 왜 내가 처음에 "정적"을 추가 한 다음 그 메서드를 호출하는 방법을 변경해야만하는지 이해하지 못했습니다. 정적으로 호출 된 2 가지 메소드를 변경해야하는 이유는 무엇입니까? 그리고 왜 내가 lab2 인스턴스로 변경된 메소드를 호출 할 수 없습니까?
대단히 죄송합니다.
'<= i' 그 시작 경우에만 복사 때문에 아무것도하지 않는 CopyTo''로 두 번째 전화는 이유 절대로 사실이 아니다. 디버거에서 코드를 단계별로 실행하십시오. –
http://stackoverflow.com/questions/1547252/how-do-i-concatenate-two-arrays-in-c – Slai