Entwickler-Ecke

Basistechnologien - Liste sortieren


Akula - Mi 16.01.08 15:15
Titel: Liste sortieren
Hallo, erstmal muss ich sagen das ich noch nicht sehr viel Erfahrung mit C# habe. Habe mich jetzt mal an Listen rangetraut. Ich habe folgendes programmiert mit einem Sortier-Algorithmus.

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
 class Wettkampfkarte : IComparer
    {
        string Name, Vorname, Klasse;
        int Jahrgang, Wurf, Sprung, Lauf, Gesamt;

        public string name
        {
            set { this.Name = value; }
            get { return this.Name; }
        }

        public string vorname
        {
            set { this.Vorname = value; }
            get { return this.Vorname; }
        }

        public int Compare(object x, object y)
        {
            Wettkampfkarte we = (x as Wettkampfkarte);
            Wettkampfkarte ws = (y as Wettkampfkarte);

            if ((Name != null) && (Vorname != null))
                return we.Vorname.CompareTo(ws.Vorname);
            return -1;
        }


Diesen möchte ich nur gerne aufrufen. Nur weiß ich lieder nicht wie ich das machen muss.
habe mir eine Liste erstellt: List<Wettkampfkarte> i = new List<Wettkampfkarte>();
Diese klappt auch wunderbar, aknn auch Wettkampfkarten einfügen, ausgeben etc.

Nur wie muss ich den Befehl Sort aufruefen, das der mir das sortiert und ist der Sortier-Algorithmus richtig?


Kha - Mi 16.01.08 19:47

IComparer ist das falsche Interface für Klassen, die sich selbst vergleichen können. Benutze IComparable (am besten gleich IComparable<Wettkampfkarte>), dann genügt ein einfaches Sort().

PS: Ich würde es erst gar nicht dazu kommen lassen, dass eine Karte mit leerem Vornamen und/oder Nachnamen eingefügt werden kann. Außerdem hast du da was verdreht: Felder werden klein geschrieben, Eigenschaften groß ;) .


Akula - Mi 16.01.08 23:48

Hallo Khabarakh,

vielen, vielen Dank für deine Antworten, endlich habe ich es geschafft. Danke, danke. Und eh das andere ist mir nie so wirklich aufgefallen, auch danke dafür.