Forum » Programiranje » c# kako nareidm kompleksnejsi object in ga primerjam z ==
c# kako nareidm kompleksnejsi object in ga primerjam z ==
Vapo1 ::
class Koordinate { public int x; public int y; }
Koordinate K1 = new Koordinate();
K1.x = 100;
K1.y = 200;
Koordinate K2 = new Koordinate();
K2.x = 100;
K2.y = 200;
/////////////////
zdaj bi pa rad da se primerja:
K1==K2
neki v tem smislu...
a moram uporabiti reicmo struct al kaj takega.. a moram svoje operator definirati(zdi se mi da s enekaj takega da)
napisati tisti nek "comparrer"
al je edina moznost da vsakic cekiram za vse x in y....
ker problem je da bi imel rad kompleksnejsi objekt kot samo Koordinate x in y....
lp
Tutankhamun ::
najdi operator overloading
pa overload-ej == operator pa != pa še neki, mislm da morš, sej ti prevajalnik pove če še kej manjka :).
pa overload-ej == operator pa != pa še neki, mislm da morš, sej ti prevajalnik pove če še kej manjka :).
AMD Phenom QUAD 9950 Black Edition, 8GB
Vapo1 ::
kul ratalo mi je..
sem dodal tole
public static bool operator ==(HashElement he1, HashElement he2)
{
return (he1.Pos == he2.Pos) && (he1.Length == he2.Length);
}
public static bool operator !=(HashElement he1, HashElement he2)
{
return !((he1.Pos == he2.Pos) && (he1.Length == he2.Length));
}
in zdaj lepo deluje:
HashElement h1 = new HashElement();
h1.Length = 1;
h1.Pos = 1;
HashElement h2 = new HashElement();
h2.Length = 1;
h2.Pos = 1;
bool b = h1==h2;
bool b2 = h1!=h2;
MessageBox.Show("Test "+ b + " " + b2);
ampak.. kako pa zdaj preverim nazaj po stari metodi... ce h1 pointa na isti object kot h2....
ker kolkor vem sta h1 in h2 v temu primeru pointerja...
in pred temi overloadanimi operatorji je == vrnil false
mogoce ce ga castam kot object?
bool b = (object)h1 == (object)h2;
dela ce ga castam... a je se kaksen drug nacin mogoce.. razen castanja?
sem dodal tole
public static bool operator ==(HashElement he1, HashElement he2)
{
return (he1.Pos == he2.Pos) && (he1.Length == he2.Length);
}
public static bool operator !=(HashElement he1, HashElement he2)
{
return !((he1.Pos == he2.Pos) && (he1.Length == he2.Length));
}
in zdaj lepo deluje:
HashElement h1 = new HashElement();
h1.Length = 1;
h1.Pos = 1;
HashElement h2 = new HashElement();
h2.Length = 1;
h2.Pos = 1;
bool b = h1==h2;
bool b2 = h1!=h2;
MessageBox.Show("Test "+ b + " " + b2);
ampak.. kako pa zdaj preverim nazaj po stari metodi... ce h1 pointa na isti object kot h2....
ker kolkor vem sta h1 in h2 v temu primeru pointerja...
in pred temi overloadanimi operatorji je == vrnil false
mogoce ce ga castam kot object?
bool b = (object)h1 == (object)h2;
dela ce ga castam... a je se kaksen drug nacin mogoce.. razen castanja?
Zgodovina sprememb…
- spremenilo: Vapo1 ()
Keki ::
V c# ni pointerjev, vsaj eksplicitnih ne. Mogoče pali če overloadaš še metodo Equals al pa če primerjaš ref h1 pa ref h2.
Drugače ko overloadaš operator == se avtomatsko overloada !=. Če želiš popoln overload pa moreš overloadat še metodo Equals().
Sam tolko, da veš za naprej :D
Drugače ko overloadaš operator == se avtomatsko overloada !=. Če želiš popoln overload pa moreš overloadat še metodo Equals().
Sam tolko, da veš za naprej :D
http://www.alfakan.si/
http://mihajerot.si/
http://mihajerot.si/
Vapo1 ::
ko sem overloadal samo == mi je compiler pribil da moram nujno se !=
sem kaj narobe nardil?
ker se res kretensko pocutim ko pisem potem se enkrat isto kodo za != samo da je vse v velikem oklepaju in spredaj klicaj !
sem kaj narobe nardil?
ker se res kretensko pocutim ko pisem potem se enkrat isto kodo za != samo da je vse v velikem oklepaju in spredaj klicaj !
krho ::
Nič nisi naredil narobe. Vedno moraš overlodati nasprotna si operatorja.
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net
Genetic ::
ker se res kretensko pocutim ko pisem potem se enkrat isto kodo za != samo da je vse v velikem oklepaju in spredaj klicaj !
Tako bo malo krajse:
public static bool operator !=(HashElement he1, HashElement he2)
{
return !(he1 == he2);
}
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | java problemOddelek: Programiranje | 736 (616) | Sergio |
» | Napaka pri povezavi z bazo - c#Oddelek: Programiranje | 1006 (870) | Mitja Bonča |
» | [NALOGA] Java: RekurzijaOddelek: Programiranje | 953 (767) | Spura |
» | [C#] overloaded operator ==Oddelek: Programiranje | 1111 (990) | user4683 |
» | Collision detectionOddelek: Programiranje | 1915 (1667) | Senitel |