HOWTO · Csharp

Überladungszuweisungsoperator in C#

In diesem Artikel erfahren Sie, wie Sie Zuweisungsoperatoren mit C# überladen.

In diesem Artikel erfahren Sie, wie Sie Zuweisungsoperatoren mit C# überladen. Schauen wir uns zuerst das Überladen von Operatoren an.

Operatorüberladung in C#

Eine Methode zur Neudefinition eines eingebauten Operators wird als Operatorüberladung bezeichnet. Wenn einer oder beide Operanden vom benutzerdefinierten Typ sind, können wir benutzerdefinierte Implementierungen vieler verschiedener Operationen erstellen.

Verwenden Sie implizite Konvertierungsoperatoren, um das Überladen von Zuweisungsoperatoren in C# zu implementieren

Implizite Konvertierungsoperationen können entwickelt werden. Sie zu unveränderlichen Strukturen zu machen, ist ein weiterer kluger Schachzug.

Die Primitiven sind genau das, und das macht es unmöglich, von ihnen zu erben.

Im folgenden Beispiel entwickeln wir einen impliziten Konvertierungsoperator zusammen mit Additions- und anderen Operatoren.

  • Importieren Sie zunächst die folgenden Bibliotheken:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text.RegularExpressions;
    
  • Wir erstellen eine Struktur namens Velocity und erstellen eine Double-Variable namens value.
    public struct Velocity {
      private readonly double value;
    }
    
  • Weisen Sie Velocity an, eine öffentliche Velocity zu erstellen, die eine Variable als Parameter erhält.
    public Velocity(double value) {
      this.value = value;
    }
    
  • Jetzt erstellen wir einen impliziten Operator Velocity.
    public static implicit operator Velocity(double value) {
      return new Velocity(value);
    }
    
  • Dann erstellen wir die Operatoren Addition und Subtraktion zum Überladen.
    public static Velocity operator +(Velocity first, Velocity second) {
      return new Velocity(first.value + second.value);
    }
    public static Velocity operator -(Velocity first, Velocity second) {
      return new Velocity(first.value - second.value);
    }
    
  • Zuletzt rufen wir in der Methode Main() das Objekt Velocity zum Überladen auf.
    static void Main() {
      Velocity v = 0;
      v = 17.4;
      v += 9.8;
    }
    

Vollständiger Quellcode:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

public struct Velocity {
  private readonly double value;

  public Velocity(double value) {
    this.value = value;
  }
  public static implicit operator Velocity(double value) {
    return new Velocity(value);
  }
  public static Velocity operator +(Velocity first, Velocity second) {
    return new Velocity(first.value + second.value);
  }
  public static Velocity operator -(Velocity first, Velocity second) {
    return new Velocity(first.value - second.value);
  }
}

class Example {
  static void Main() {
    Velocity v = 0;
    v = 17.4;
    v += 9.8;
  }
}