Parameterliste einer Methode bearbeiten

07/07/2008 - 17:06 von Michaela Meier | Report spam
Hi,

Ich übergebe Zahlen als Parameterliste an eine Methode, die Vorzeichen
zàhlen und bei zuviel "Minussen" dieselben "umdrehen" soll.

Bisher hatte ich diese Methode allein zum Zàhlen benutzt:

private int Minus(params [] int zahlen)
{
int zaehler=0;
foreach () { // minusse zàhlen}
return zaehler;
}

Das klappt ganz prima. Nur das mit dem Umdrehen schaffe ich nicht,
denn dazu müßte ich die Zahlen als ByRef übergeben und dann meckert
mich der Debugger voll, daß dies bei params nicht ginge.

Natürlich könnte ich die Methode umschreiben und die neue Zahlenliste
als int[] hochreichen, aber wie sortiere ich dann die Variablen nach
dem Aufruf wieder auseinander?

Hat jemand eine Idee, wie man die Sache richtig angeht?

Danke

Michaela
 

Lesen sie die antworten

#1 Frank Dzaebel
07/07/2008 - 18:31 | Warnen spam
Hallo Michaela,

Das klappt ganz prima. Nur das mit dem Umdrehen schaffe ich nicht,
denn dazu müßte ich die Zahlen als ByRef übergeben und dann meckert
mich der Debugger voll, daß dies bei params nicht ginge.



hat er ja auch recht, denn das geht nur mit Variablen.
Du könntest aber z.B. die Zahlen zurückgeben:

private int[] Minus(out int signum, params int[] zahlen)
{
int sgn = 0;
for (int i = 0; i < zahlen.Length; i++)
sgn += zahlen[i] < 0 ? -1 : 1;
signum = sgn;
for (int i = zahlen.Length-1; i>=0 && sgn<0; i--)
if (zahlen[i] < 0)
{ sgn+=2; zahlen[i] = -zahlen[i];
}
else signum++;
return zahlen;
}

private void Form1_Load(object sender, EventArgs e)
{
int minus; int[] zahlen;
zahlen = Minus(out minus, 1, -2, 3, -4, -5, -6);
}




Natürlich könnte ich die Methode umschreiben und die neue Zahlenliste
als int[] hochreichen, aber wie sortiere ich dann die Variablen nach
dem Aufruf wieder auseinander?



Sollte eigentlich durch obiges Beispiel beantwortet sein. Ansonsten
noch etwas detaillierter hier angeben, inwiefern es wie
auseinandersortiert werden soll.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen