Enviar a un amigo Imprimir Texto sin justificar Texto justificado Letra pequeña Letra mediana Letra grande
buscar 
novedades
Recibe las ultimas noticias y los mejores articulos en tu email
Secciones
 • .NET Framework
 • ADO .NET
 • Ajax
 • Asp .NET
 • Biztalk
 • C#
 • Commerce Server
 • Exchange
 • IIS
 • Metodologías
 • J#
 • Móviles
 • Office
 • Reporting Services
 • Seguridad
 • Servicios Web
 • Sharepoint
 • Silverlight
 • SQL Server
 • Visual Basic .NET
 • Visual C++ .NET
 • Visual Studio
 • WCF
 • Windows
 • Workflow Foundation
 • WPF
 • XAML
 • XML
 • Dynamics
 • Libros
 • Noticias
 • Articulos
 • Webcast
 • Tutoriales
 • Eventos
 • Cursos
 • Ofertas Empleo
 • RSS
Contacto
¿Quieres saber quien es el creador de Clikear?
Weblogfree.com, crea tu propio blog facilmente, gratis y en español
Dotnetsolidario, ayuda al tercer mundo a traves de las tecnologias de la informacion
 
 

Tutorial C#

Concepto de redefinición de operador

 

Un operador en C# no es más que un símbolo formado por uno o más caracteres que permite realizar una determinada operación entre uno o más datos y produce un resultado. En el Tema 4: Aspectos Léxicos ya hemos visto que C# cuenta con un buen número de operadores que permiten realizar con una sintaxis clara e intuitiva las operaciones comunes a la mayoría de lenguajes (aritmética, lógica, etc) así como otras operaciones más particulares de C# (operador is, operador stackalloc, etc.)

 

En C# viene predefinido el comportamiento de sus operadores cuando se aplican a ciertos tipos de datos. Por ejemplo, si se aplica el operador + entre dos objetos int devuelve su suma, y si se aplica entre dos objetos string devuelve su concatenación. Sin embargo, también se permite que el programador pueda definir el significado la mayoría de estos operadores cuando se apliquen a objetos de tipos que él haya definido, y esto es a lo que se le conoce como redefinición de operador.

 

Nótese que en realidad la posibilidad de redefinir un operador no aporta ninguna nueva funcionalidad al lenguaje y sólo se ha incluido en C# para facilitar la legibilidad del código. Por ejemplo, si tenemos una clase Complejo que representa números complejos podríamos definir una función Sumar() para sus objetos de modo que a través de ella se pudiese conseguir la suma de dos objetos de esta clase como muestra este ejemplo:

 

            Complejo c1 = new Complejo(3,2);           // c1 = 3 + 2i

            Complejo c2 = new Complejo(5,2);           // c2 = 5 + 2i

            Complejo c3 = c1.Sumar(c2);                  // c3 = 8 + 4i

 

Sin embargo, el código sería mucho más legible e intuitivo si en vez de tenerse que usar el método Sumar() se redefiniese el significado del operador + para que al aplicarlo entre objetos Complejo devolviese su suma. Con ello, el código anterior quedaría así:

 

            Complejo c1 = new Complejo(3,2);     // c1 = 3 + 2i

            Complejo c2 = new Complejo(5,2);     // c2 = 5 + 2i

            Complejo c3 = c1 + c2;                      // c3 = 8 + 4i

 

Ésta es precisamente la utilidad de la redefinición de operadores: hacer más claro y legible el código, no hacerlo más corto. Por tanto, cuando se redefina un operador es importante que se le dé un significado intuitivo ya que si no se iría contra de la filosofía de la redefinición de operadores. Por ejemplo, aunque sería posible redefinir el operador * para que cuando se aplicase entre objetos de tipo Complejo devuelva su suma o imprimiese los valroes de sus operandos en la ventana de consola, sería absurdo hacerlo ya que más que clarificar el código lo que haría sería dificultar su comprensión.

 

De todas formas, suele ser buena idea que cada vez que se redefina un operador en un tipo de dato también se dé una definición de un método que funcione de forma equivalente al operador. Así desde lenguajes que no soporten la redefinición de operadores también podrá realizarse la operación y el tipo será más reutilizable.

 

Principal
Recomendado