Junior — Middle
Automatik típuskonverzió történik két szerkezet összehasonlításakor egy programozási nyelvben?
sobes.tech MI
Válasz az MI-től
C#-ban az automatikus típuskonverzió (implicit conversion) nem történik meg két szerkezet összehasonlításakor, ha azok különböző típusúak. A szerkezetek összehasonlításához általában a Equals metódust vagy az operátorok túlterhelését használják.
Ha a szerkezetek ugyanazon a típuson vannak, akkor az összehasonlítás a mezők értéke szerint történik, ha a Equals metódus vagy a == operátor felül van írva. Ha a szerkezetek különböző típusúak, a fordító hibát ad, mivel nem tudja automatikusan átalakítani az egyik típust a másikba az összehasonlításhoz.
Példa:
struct Point {
public int X, Y;
public override bool Equals(object obj) {
if (!(obj is Point)) return false;
Point p = (Point)obj;
return X == p.X && Y == p.Y;
}
}
Point p1 = new Point { X = 1, Y = 2 };
Point p2 = new Point { X = 1, Y = 2 };
bool areEqual = p1.Equals(p2); // true
Ezért a C#-ban a szerkezetek összehasonlításakor nincs automatikus típuskonverzió.