x-kom hosting

[C#] IComparable

Kornelia
utworzono
utworzono

Witam,
mam program z następującym porównaniem:
- drukarka kolorowa jest zawsze lepsza (większa) od czarno-białej,
- gdy dwie drukarki mają taką samą składową Kolor, to porównuje się prędkości druku (im większa tym lepsza).



Czy ktoś mógłby mi wytłumaczyć działanie IComparable na tym przykładzie?

[code]
class Drukarka:IComparable
{
bool Kolor;
double PredkoscDruku;

public int CompareTo(object ob)
{
Drukarka tmp = (Drukarka)ob;
if (tmp.Kolor == this.Kolor)
{
if (tmp.PredkoscDruku > this.PredkoscDruku)
return 1;
if (tmp.PredkoscDruku < this.PredkoscDruku)
return -1;
if (tmp.PredkoscDruku == this.PredkoscDruku)
return 0;
}
else
{
if (tmp.Kolor)
return 1;
if (this.Kolor)
return -1;
}
return 0;
}}[/code]

benkowik
komentarz
komentarz

Jak zawsze interfejs typu [b]IComparable[/b] służą do nietypowych* sortowań. Tutaj masz porównania o których sam pisałeś i wynikiem sortowania będzie efekt, o którym pisałeś.

Co dokładnie chcesz wiedzieć? Jak to działa? Jakie procesy tam zachodzą? Na wiele pytań pomoże ci Support MS:
[url="http://msdn.microsoft.com/en-us/library/system.icomparable.aspx"]http://msdn.microsoft.com/en-us/library/system.icomparable.aspx[/url]

* - np. sortowanie tablicy 2-wymiarowej

Kornelia
komentarz
komentarz

Chodzi mi o to co konkretnie oznacza tmp. , this.
Jak rozumieć: Drukarka tmp = (Drukarka)ob;
if (tmp.Kolor == this.Kolor) itd.

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.