2010-02-11 9 views
7

Tengo una clase de extensión para System.Net.IPAddress y quería sobrecargar los operadores binarios >, <, == pero el compilador me dice que no puedo sobrecargar esos operadores dentro de una clase estática, que debo tener para mi otra extensión métodos. ¿Hay alguna razón en particular para esto?¿Por qué los operadores no pueden estar sobrecargados dentro de una clase estática?

Gracias.

+0

Consideramos agregar "operadores de extensión" a C# 4, pero no encajaron en el presupuesto y se cortaron. Con suerte, los incluiremos en una versión futura hipotética del idioma. –

+0

@Eric: ¡Espero que los incluyas en una versión "real" en el futuro! :) ¡He oído hablar de programación funcional, pero no de programación hipotética! ¿Es eso un nuevo paradigma? –

+0

@Chris Dunaway: Sí, por ahora es mejor conocido como "programación cuántica". – jason

Respuesta

12

Los operadores deben estar relacionados con las instancias del tipo en que se declaran. Como no puede tener instancias de una clase estática, no tiene sentido definir operadores.

No hay "operadores de extensión" en .NET.

para sus propósitos, considerar la implementación de un IComparer<T> (cubre < y >) y/o IEqualityComparer<T> (cubre ==, o fuerza uso justo comparar regresar 0, sino que depende de si se tiene en cuenta "ordena iguales" e "igual" como el mismo).

+0

Incluso consiguió que Jon Skeet elimine su respuesta –

+0

@Jan - bueno, la mía también fue 50 segundos antes ;-p –

Cuestiones relacionadas