2008-10-30 4 views

Antwort

3

Sie müssen einen IComparer Objekt oder Comparison Delegaten an die Sortierfunktion übergeben.

Hier ist ein Beispielcode aus C# 2,0

Array.Sort(array,delegate(string a, string b) 
    { 
     return b.CompareTo(a); 
    }); 

EDIT: verpassten das Array Bit.

+0

Warum nicht einfach b.CompareTo (a) zurückgeben? –

+0

Ja, das ist besser. –

+0

Es gibt eigentlich zwei wichtige Unterschiede: 1) Was soll mit Null-Strings passieren? Wenn Sie Vergleiche rückgängig machen, wollen Sie oft nicht rückgängig machen, was mit Nullen passiert. Nur ein Gedanke. 2) Die Rückgabe von -a.CompareTo (b) (d. H. Vorbearbeitung) verursacht Probleme, wenn int.MinValue von a.CompareTo (b) zurückgegeben wird. –

11

Stellen Sie einen geeigneten Elementvergleich bereit. Welche C# Version verwendest du? 3 können Sie dies tun:

Array.Sort(myarray, (a, b) => b.CompareTo(a)); 
1

Wenn Sie einen anderen Vergleich verwenden, ist das Gegenteil der Standard, die es tun würde.

Alternativ kann es normal sortiert und dann umgekehrt werden ...