Доступ к свойству Class без использования точечного оператора - PullRequest
2 голосов
/ 29 февраля 2012

Мне нужно перегрузить некоторые операторы при вызове с использованием типов Double.Чтобы добиться этого, я создаю класс MyDouble, который наследуется от Double.MyDouble выглядит примерно так:

class MyDouble : Double
{
   Double value;
   // operator overloads go here
}

Я хочу абстрагировать свойство value от пользователя, чтобы его можно было использовать просто как Double.По сути, я хочу, чтобы пользователь мог сделать это:

MyDouble a = 5;         //a.value gets assigned 5
Console.WriteLine(a);   //prints a.value

Я не хочу, чтобы пользователь должен был специально указывать на свойство value.Это возможно?Как бы я пошел по этому поводу?

1 Ответ

5 голосов
/ 29 февраля 2012

Вы можете определить оператор неявного преобразования, например:

class MyDouble {
    public Value {get; private set;}
    public Double(double value) {
        Value = value;
    }
    // Other declarations go here...
    public static implicit operator double(MyDouble md) {
        return md.Value;
    }
    public static implicit operator MyDouble(double d) {
        return new MyDouble(d);
    }
}
...