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 | 2249 (1815) | Ciklamen |
| » | Naloga - programiranje v C#Oddelek: Šola | 1124 (899) | Skaty |
| » | [c#] Vstavljanje vrednosti v tabeloOddelek: Programiranje | 1716 (1538) | Cvenemir |
| » | [NALOGA] Java: RekurzijaOddelek: Programiranje | 1066 (880) | Spura |
| » | c# primerjava vrednosti dveh tipov object (brez da vem kateri tip sta)Oddelek: Programiranje | 1220 (1007) | Looooooka |