Operadores sobrecargables (Guía de programación de C#)
C# permite sobrecargar operadores en los tipos definidos por el usuario, mediante la definición, con la palabra clave operator, de funciones miembro estáticas.No obstante, no todos los operadores se pueden sobrecargar y algunos presentan restricciones, como se indica en la siguiente tabla:
Operadores |
Posibilidad de sobrecarga |
---|---|
Estos operadores unarios sí se pueden sobrecargar. |
|
Estos operadores binarios sí se pueden sobrecargar. |
|
Los operadores de comparación se pueden sobrecargar (pero vea la nota que aparece a continuación de esta tabla). |
|
Los operadores lógicos condicionales no se pueden sobrecargar, pero se evalúan mediante & y |, los cuales sí se pueden sobrecargar. |
|
El operador de indización de matrices no se puede sobrecargar, pero se pueden definir indizadores. |
|
El operador de conversión explícita de tipos no se puede sobrecargar, pero se pueden definir nuevos operadores de conversión (vea explicit e implicit). |
|
Los operadores de asignación no se pueden sobrecargar, pero +=, por ejemplo, se evalúa con +, el cual sí se puede sobrecargar. |
|
=.?:, ¿??, - >, =>, f (x), como, checked, desactivado, predeterminado, Delegado, es, nuevo, sizeof, typeof |
Estos operadores no se pueden sobrecargar. |
[!NOTA]
Si se sobrecargan los operadores de comparación, dicha sobrecarga debe realizarse en parejas; es decir, si se sobrecarga ==, también se debe sobrecargar !=.Lo contrario también es cierto y similar para < y >, y para <= y >=.
Sobrecargar un operador en una clase personalizada requiere la creación de un método en la clase con la firma correcta.El método se debe denominar "operador X", donde X es el nombre o símbolo del operador que se va a sobrecargar.Los operadores unarios tienen un parámetro y los operadores binarios tienen dos.En cada caso, un parámetro debe tener el mismo tipo que la clase o struct que declara el operador, como se muestra en el siguiente ejemplo:
public static Complex operator +(Complex c1, Complex c2)
Para obtener más información, vea Cómo: Utilizar la sobrecarga de operadores para crear una clase de números complejos (Guía de programación de C#).
Vea también
Referencia
Instrucciones, expresiones y operadores (Guía de programación de C#)
Operadores (Guía de programación de C#)
Conceptos
Otros recursos
¿Por qué son los operadores sobrecargados siempre estáticos en C#?