Sobes.tech
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ó.