Forum » Programiranje » [C#] IComparer
[C#] IComparer
aljaz92 ::
Eno težavo imam in sicer naloga je da naredim seznam LIST < T >, za katerega potem uporabim IComparer za razvrščanje stvari v listu.
trenutno imam takole sestavljeno nalogo v razredu Destinacije.cs, kjer imam konstruktorje, privzete konstruktorje ter get in set metode za spremenljivke, dodan imam še seznamdestinacij.cs v katerem imam metode za izpis in dodajanje na LIST, ter tretji razred Primerjalnik.cs, v katerem je sledeča koda:
Ko grem čez debug se mi program sesuje v razredu seznadestinacij.cs v metodi za dodajanje, ki pa je napisana takole:
Program se sesuje ko v seznam dodam več podatkov.
trenutno imam takole sestavljeno nalogo v razredu Destinacije.cs, kjer imam konstruktorje, privzete konstruktorje ter get in set metode za spremenljivke, dodan imam še seznamdestinacij.cs v katerem imam metode za izpis in dodajanje na LIST, ter tretji razred Primerjalnik.cs, v katerem je sledeča koda:
public class Primerjalnik : IComparer<Destinacije> { public int Compare(Destinacije x, Destinacije y) // Vhod: x,y - niza, ki jih primerjalnik primerja. // Vrne: 0, če sta niza enaka; <0, če je x<y; >0, če je x>y. { if (x == null) { // x= null: if (y == null) { // Če je x null in y null, sta enaka. return 0; } else { // Če je x null in y ni null, je y > x.. return -1; } } else { // x ni null: if (y == null) // Če x ni null in je y null, je x > y. { return 1; } else // sicer ... { // ... če ni x niti y null, primerjaj dolžini obeh nizov: int vrni = x.DRUZBA.Length.CompareTo(y.DRUZBA.Length); if (vrni != 0) { // Če niza nista enako dolga, je daljši niz > krajšega. return vrni; } else { // Če sta niza enako dolga, ju razvrsti z običajno metodo za razvrstitev nizov. int vrni1 = x.DRUZBA.CompareTo(y.DRUZBA); return vrni1; } } } } }
Ko grem čez debug se mi program sesuje v razredu seznadestinacij.cs v metodi za dodajanje, ki pa je napisana takole:
public void DodajDestinacijo(Destinacije NovaDestinacija, Primerjalnik MojPrimerjalnik) { Destinacija.Sort(MojPrimerjalnik); int Lokacija = 0; if (Destinacija.Count != 0) { // poiščemo index za vstavlanje Lokacija = Destinacija.BinarySearch(NovaDestinacija, MojPrimerjalnik); } // vstavimo podatke Destinacija.Insert(Lokacija, NovaDestinacija); }
Program se sesuje ko v seznam dodam več podatkov.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C#] Iskalno DrevoOddelek: Programiranje | 2047 (1613) | Ciklamen |
» | Naloga - programiranje v C#Oddelek: Šola | 990 (765) | Skaty |
» | [c#] Vstavljanje vrednosti v tabeloOddelek: Programiranje | 1599 (1421) | Cvenemir |
» | [NALOGA] Java: RekurzijaOddelek: Programiranje | 950 (764) | Spura |
» | c# primerjava vrednosti dveh tipov object (brez da vem kateri tip sta)Oddelek: Programiranje | 1092 (879) | Looooooka |