Operador de asignación de sobrecarga en C#
-
Sobrecarga de operadores en
C#
-
Utilice operadores de conversión implícitos para implementar la sobrecarga de operadores de asignación 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 llamadavalue
.public struct Velocity { private readonly double value; }
-
Instruir a
Velocity
para crear unaVelocity
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
yResta
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 deVelocity
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;
}
}
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