Hallo,
ich habe ein Anfängerproblem zum unten aufgeführten Code. Ich soll ein Typargument expliziert angeben. Weiss einer Rat, wie ich das Problem lösen könnte? Besten Dank im Voraus!
using System;
class Permutations
{
static void Main(string[] args)
{
int[] values = { 1, 2, 3, 4 };
Generate(values.Length, values); // Hier wird Generate rot unterstrichen
string[] words = { "The", "quick", "brown", "fox" };
Generate(words.Length, words); // Hier wird Generate rot unterstrichen
Console.ReadKey();
}
static void Generate<T>(T[] A, int n)
{
if (n >= 1)
Console.WriteLine("" + string.Join("", A));
else
{
Generate(A, n + 1);
for (int i = n + 1; i < n; i++)
{
Swap(ref A[n], ref A[i]);
Generate(A, n + 1);
Swap(ref A[n], ref A[i]);
}
}
}
// Swap Funktion
static void Swap<T>(ref T swap1, ref T swap2)
{
T temp = swap1;
swap1 = swap2;
swap2 = temp;
}
}
Hi,
wo kommt denn die Methode
Generate(..., ...)
her?
Da fehlt doch sicher ein Namespace - Import?
Gruß, Marko
Du übergibst beim ersten Generate auch den falschen Parameter.
Dort musst du values und dann erst values.Length übergeben.
Es würde reichen, wenn du den int Parameter entfernst und nur das Array mitgibst.
Den zweiten Parameter bekommst du so oder so aus der Array.Length Eigenschaft.
Ebenfalls solltest du den Helfern etwas unter die Arme greifen und deinen Code zum guten lesen Einrücken + die Code Tags nutzen.
using System;
class Permutations
{
public static void Main(string[] args)
{
int[] values = { 1, 2, 3, 4 };
string[] words = { "The", "quick", "brown", "fox" };
Generate(values, values.Length);
Generate(words, words.Length);
Console.ReadKey();
}
private static void Generate<T>(T[] array, int length)
{
if (length >= 1)
{
Console.WriteLine("" + string.Join("", array));
}
else
{
Generate(array, length + 1);
for (int i = length + 1; i < length; i++)
{
Swap(ref array[length], ref array[i]);
Generate(array, length + 1);
Swap(ref array[length], ref array[i]);
}
}
}
// Swap Funktion
private static void Swap<T>(ref T current, ref T next)
{
T temp = current;
current = next;
next = temp;
}
}
Nachtrag:
@trashkid2000
Die Methode steht dort, ist nur wegen den fehlenden Code Tags und der fehlenden Einrückung etwas leicht zu überlesen!
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
Super, Vielen Dank, T-Virus
Ja, leider hat die Einrückung beim Erstellen des Themas nicht funktioniert. Sorry hierfür!
Bin hier neu und muss noch lernen mit dem Forum umzugehen.
Besten Dank nochmal,. Das hat mir sehr geholfen.
Editiere deinen Eingangsbeitrag und füge die C#-Tags hinzu (so lernst du es 😉.
Und über die Vorschau kannst du es dann überprüfen, bevor du es absendest.