Присваивание пользовательскому классу значения стандартного типа (например, double) - C#
Формулировка задачи:
Есть вот такой код:
Я хочу, чтобы по умолчанию, если я пытаюсь присвоить объекту типа ProductionUnit значение типа double, то оно записывалась в переменную класса oil. И наоборот, если я присваиваю переменной типа double переменную типа ProductionUnit, то переменной типа double присваивалось значение переменной класса oil.
Как это реализовать?
class Program
{
static void Main()
{
ProductionUnit pu = new ProductionUnit();
double d = 123.456;
pu = d;
System.Console.WriteLine(pu.oil);
d = 0;
d = pu;
System.Console.WriteLine(d);
}
}
public class ProductionUnit
{
public double oil;
public double water;
// здесь должен быть какой-то код, который показывает, как классу следует работать при прямом присвоении типа double
}Решение задачи: «Присваивание пользовательскому классу значения стандартного типа (например, double)»
textual
Листинг программы
public class ProductionUnit
{
public double Oil { get; set; }
public double Water { get; set; }
public static implicit operator double(ProductionUnit d)
{
return d.Oil;
}
public static implicit operator ProductionUnit(double d)
{
return new ProductionUnit() { Oil = d };
}
}