Nun, der Code, den Sie geschrieben haben (ref cards[n]
) nur mit einem Array (keine Liste) arbeiten - aber Sie würden verwenden Sie einfach (wo foo
und bar
die beiden Werte):
static void Swap(ref int foo, ref int bar) {
int tmp = foo;
foo = bar;
bar = tmp;
}
Oder vielleicht (wenn Sie wollen Atom):
Interlocked.Exchange(ref foo, ref bar);
Persönlich glaube ich nicht, dass ich mich mit einer Tauschmethode beschäftigen würde - tu es einfach direkt; Dies bedeutet, dass Sie (entweder für eine Liste oder für ein Array) verwenden können:
int tmp = cards[n];
cards[n] = cards[i];
cards[i] = tmp;
Wenn Sie wirklich eine Swap-Methode schreiben, arbeitete entweder auf eine Liste oder ein Array wollen, dann würden Sie müssen so etwas wie:
static void Swap(IList<int> list, int indexA, int indexB)
{
int tmp = list[indexA];
list[indexA] = list[indexB];
list[indexB] = tmp;
}
(es trivial wäre, diese generisch zu machen) - aber die Original „inline“ Version (dh keine Methode) auf einem Array arbeiten wird schneller sein.
Interlocked.Exchange:
Diese Erweiterungsmethode dann wie folgt verwendet werden? – Svish
Wie würde es mit einem Array funktionieren? – Svish
Strike den Austausch ... –