Operador de asignación de sobrecarga en C#

Muhammad Zeeshan 12 octubre 2023
  1. Sobrecarga de operadores en C#
  2. Utilice operadores de conversión implícitos para implementar la sobrecarga de operadores de asignación en C#
Operador de asignación de sobrecarga en C#

Este artículo le enseñará cómo sobrecargar los operadores de asignación usando C#. Primero echemos un vistazo a la sobrecarga de operadores.

Sobrecarga de operadores en C#

Un método para la redefinición de un operador integrado se denomina sobrecarga de operadores. Cuando uno o ambos operandos son del tipo definido por el usuario, podemos crear implementaciones definidas por el usuario de muchas operaciones diferentes.

Utilice operadores de conversión implícitos para implementar la sobrecarga de operadores de asignación en C#

Se pueden desarrollar operaciones de conversión implícitas. Hacerlas estructuras inmutables es otro movimiento inteligente.

Los primitivos son solo eso, y eso es lo que hace imposible heredar de ellos.

Desarrollaremos un operador de conversión implícito en el siguiente ejemplo, junto con la suma y otros operadores.

  • Para comenzar, importe las siguientes bibliotecas:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text.RegularExpressions;
    
  • Crearemos una estructura llamada Velocity y crearemos una variable doble llamada value.
    public struct Velocity {
      private readonly double value;
    }
    
  • Instruir a Velocity para crear una Velocity pública recibiendo una variable como parámetro.
    public Velocity(double value) {
      this.value = value;
    }
    
  • Ahora, crearemos un operador implícito Velocidad.
    public static implicit operator Velocity(double value) {
      return new Velocity(value);
    }
    
  • Luego, crearemos los operadores Suma y Resta para sobrecargar.
    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);
    }
    
  • Por último, en el método Main(), llamaremos al objeto de Velocity para sobrecargar.
    static void Main() {
      Velocity v = 0;
      v = 17.4;
      v += 9.8;
    }
    

Código fuente completo:

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;
  }
}
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

Artículo relacionado - Csharp Operator