在不使用点运算符的情况下访问Class属性

时间:2012-02-29 05:35:10

标签: c# oop operator-overloading

使用Double类型调用时,我需要重载一些运算符。为了实现这一点,我正在创建一个继承自Double的类MyDouble。 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 个答案:

答案 0 :(得分:5)

您可以定义隐式转换运算符,如下所示:

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);
    }
}