Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

Operator Overloading in C# Beheersen voor Aangepaste Typen

Je kunt de meeste ingebouwde operatoren in C# herdefiniëren (overladen) voor gebruiker-gedefinieerde typen. Overladen operatoren zijn functies met speciale namen: operator gevolgd door het symbool. Ze hebben een retourtype en parameterlijst.

Voorbeeld: + operator voor Box

public static Box operator+(Box b, Box c) {
    Box box = new Box();
    box.lengte = b.lengte + c.lengte;
    box.breedte = b.breedte + c.breedte;
    box.hoogte = b.hoogte + c.hoogte;
    return box;
}

Operator Overloading Implementeren

Volledige Implementatie

using System;

namespace OperatorOverloadApplicatie {
    class Doos {
        private double lengte, breedte, hoogte;
        public double KrijgVolume() { return lengte * breedte * hoogte; }
        public void StelLengteIn(double len) { lengte = len; }
        public void StelBreedteIn(double bre) { breedte = bre; }
        public void StelHoogteIn(double hei) { hoogte = hei; }

        public static Doos operator+(Doos b, Doos c) {
            Doos doos = new Doos();
            doos.lengte = b.lengte + c.lengte;
            doos.breedte = b.breedte + c.breedte;
            doos.hoogte = b.hoogte + c.hoogte;
            return doos;
        }
    }
    class Tester {
        static void Main(string[] args) {
            Doos Doos1 = new Doos(), Doos2 = new Doos(), Doos3 = new Doos();
            double volume = 0.0;

            Doos1.StelLengteIn(6.0); Doos1.StelBreedteIn(7.0); Doos1.StelHoogteIn(5.0);
            Doos2.StelLengteIn(12.0); Doos2.StelBreedteIn(13.0); Doos2.StelHoogteIn(10.0);

            volume = Doos1.KrijgVolume(); Console.WriteLine("Volume Doos1: {0}", volume);
            volume = Doos2.KrijgVolume(); Console.WriteLine("Volume Doos2: {0}", volume);

            Doos3 = Doos1 + Doos2;
            volume = Doos3.KrijgVolume(); Console.WriteLine("Volume Doos3: {0}", volume);
            Console.ReadKey();
        }
    }
}

Uitvoer:

Volume Doos1: 210
Volume Doos2: 1560
Volume Doos3: 5400

Overloadbare en Niet-overloadbare Operatoren

NrOperatoren & Beschrijving
1+, -, !, ~, ++, -- – Unaire operatoren, overloadbaar.
2+, -, *, /, % – Binaire operatoren, overloadbaar.
3==, !=, <, >, <=, >= – Vergelijkingsoperatoren, overloadbaar.
4&&, || – Conditionele logische operatoren, niet direct overloadbaar.
5+=, -=, *=, /=, %= – Toewijzingsoperatoren, niet overloadbaar.
6=, ., ?:, ->, new, is, sizeof, typeof – Niet overloadbaar.

Uitgebreid Voorbeeld: Meerdere Operatoren Overladen

// In klasse Doos:
public static bool operator==(Doos lhs, Doos rhs) {
    return lhs.lengte == rhs.lengte && lhs.hoogte == rhs.hoogte && lhs.breedte == rhs.breedte;
}
public static bool operator!=(Doos lhs, Doos rhs) { return !(lhs == rhs); }
public static bool operator<(Doos lhs, Doos rhs) {
    return lhs.lengte < rhs.lengte && lhs.hoogte < rhs.hoogte && lhs.breedte < rhs.breedte;
}
public static bool operator>(Doos lhs, Doos rhs) { ... }
public static bool operator<=(Doos lhs, Doos rhs) { ... }
public static bool operator>=(Doos lhs, Doos rhs) { ... }
public override string ToString() {
    return String.Format("({0}, {1}, {2})", lengte, breedte, hoogte);
}

Testcode toont vergelijkingen en ToString() output.

Uitvoer:

Doos 1: (6, 7, 5)
Doos 2: (12, 13, 10)
Volume Doos1: 210
Volume Doos2: 1560
Doos 3: (18, 20, 15)
Volume Doos3: 5400
Doos1 is niet groter dan Doos2
Doos1 is kleiner dan Doos2
Doos1 is niet groter of gelijk aan Doos2
Doos1 is kleiner of gelijk aan Doos2
Doos1 is niet gelijk aan Doos2
Doos3 is gelijk aan Doos4

C Taal

  1. Operator-Betrokken Onderhoud: Duewen de Winsten de Verborgen Kosten?
  2. DIY Wall-E Geïnspireerde Raspberry Pi CD-Doos Robot
  3. C# Operators – Uitgebreide gids voor operators in C#
  4. De C# Ternaire Operator: Beknopte Gids voor Conditionele Expressies
  5. Method overloading in C#: concepten, voorbeelden en best practices
  6. Constructor overloading in C#: flexibele klassen ontwerpen
  7. C++ Operator Overloading – Praktische Handleiding met Code‑Voorbeelden
  8. C++ Overloading Beheersen: Functies & Operators Uitgelegd
  9. MATLAB Basics: Essentiële Syntax & Commando's
  10. Operator overloading in Python beheersen: een praktische gids
  11. Java instanceof operator: een uitgebreide gids