» »

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 :).
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?

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
http://www.alfakan.si/
http://mihajerot.si/

MenAtWork ::

Uporabi ReferenceEquals, ta vedno gleda naslove.

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 !

Tutankhamun ::

dobr si naredu ;)
AMD Phenom QUAD 9950 Black Edition, 8GB

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

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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

java problem

Oddelek: Programiranje
7736 (616) Sergio
»

Napaka pri povezavi z bazo - c#

Oddelek: Programiranje
71006 (870) Mitja Bonča
»

[NALOGA] Java: Rekurzija

Oddelek: Programiranje
5953 (767) Spura
»

[C#] overloaded operator ==

Oddelek: Programiranje
91111 (990) user4683
»

Collision detection

Oddelek: Programiranje
81915 (1667) Senitel

Več podobnih tem