Ich mache eine Methode, die 2 Arrays und fügt sie zusammen. (Ich bin ein Neuling und dies ist eine Schulaufgabe, und ich habe gelernt, dass einige Leute hier keine Schulfragen sehen wollen. Aber ich habe schon eine Menge Arbeit gemacht, ich stecke jetzt einfach fest.)Hinzufügen von zwei Arrays mit meinen eigenen Methoden.
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;
}
In diesem im Verfahren 2 zu anderen Verfahren unter Bezugnahme I zuvor taten:
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;
}
dieser ist Indizes eines Arrays in ein anderes Array zum Kopieren. Die Startvariable ist der Index, in dem ich zuerst mit dem Kopieren beginnen werde.
public static int[] PrettyPrint(int[] intArray)
{
string result = string.Join(", ", intArray);
Console.WriteLine(result);
return null;
}
Und dies druckt ein Array in einer Zeichenfolge aus.
Das Problem liegt in der Concat-Methode. Es funktioniert für die erste Kopie. Wo ich Array1 in Array3 kopiere.
Class1.CopyTo(array1, array3, 0);
Aber für die zweite Reihe, fügt er nichts und alles, was ich von der Eingabe es bekommen als String aus ist:
1, 2, 3, 4, 5, 0, 0, 0, 0 , 0.
Ich verstehe nicht, warum nur die erste Kopie funktioniert.
Auch eine Follow-up-Frage. In meinem Hauptprogramm Registerkarte konnte ich nicht mehr verweisen diese Methoden mit einer Instanz meiner Klasse Class1 lab2 = new Class1();
. Aber ich musste sie anrufen, indem ich Klasse1 anstelle von lab2 benutzte (was für meine anderen Methoden funktionierte). Um eine Methode innerhalb einer anderen Methode in derselben Klasse aufrufen zu können, musste ich "statisch" hinzufügen und durch Hinzufügen von "statisch" musste ich ändern, wie ich die Methode in meiner Hauptprogramm-Registerkarte aufruft. Ich habe nicht wirklich verstanden, warum ich zuerst "statisch" hinzufügen und dann ändern musste, wie ich die Methode nenne. Warum musste ich die 2 Methoden, die zu statisch aufgerufen wurden, ändern? Und warum konnte ich diese veränderten Methoden nicht mit der Instanz lab2 aufrufen?
Sorry für die lange Frage!
Der Grund Ihrer zweiten Anruf 'CopyTo' tut nichts, weil Sie nur, wenn kopieren' start <= I' und dass ist niemals wahr. Durchlaufen Sie Ihren Code im Debugger. –
http://stackoverflow.com/questions/1547252/how-do-i-concatenate-two-arrays-in-c – Slai