overload operator method c# overloading operator-keyword

operator - Sobrecarga=operador en C#



method operator c# (4)

OK, sé que es imposible, pero era la mejor manera de formular el título de la pregunta. El problema es que estoy tratando de usar mi propia clase personalizada en lugar de flotar (para simulación determinística) y quiero que la sintaxis sea lo más cercana posible. Entonces, ciertamente quiero poder escribir algo como

FixedPoint myNumber = 0.5f;

¿Es posible?


Crear un tipo implícito de conversión.

Esto es un ejemplo:

<class> instance = new <class>(); float f = instance; // We want to cast instance to float. public static implicit operator <Predefined Data type> (<Class> instance) { //implicit cast logic return <Predefined Data type>; }


Sí, creando un operador de FixedPoint tipo implícito para FixedPoint si usted escribió esta clase.

class FixedPoint { public static implicit operator FixedPoint(double d) { return new FixedPoint(d); } }

Si no es obvio para el lector / codificador que un double se puede convertir en FixedPoint , también puede usar un tipo explícito de conversión en FixedPoint lugar. Entonces tienes que escribir:

FixedPoint fp = (FixedPoint) 3.5;


Si lo implícito no es lo que quiere en = sobrecarga, la otra opción es usar el operador explícito en su clase como el que aparece a continuación, haciéndolo entender por el usuario:

public static explicit operator FixedPoint(float oc) { FixedPoint etc = new FixedPoint(); etc._myValue = oc; return etc; } ... usage FixedPoint myNumber = (FixedPoint)0.5f;


Sobrecarga del operador de fundición implicit :

class FixedPoint { private readonly float _floatField; public FixedPoint(float field) { _floatField = field; } public static implicit operator FixedPoint(float f) { return new FixedPoint(f); } public static implicit operator float(FixedPoint fp) { return fp._floatField; } }

Así que puedes usar:

FixedPoint fp = 1; float f = fp;