我可以创建一个具有默认返回值的类吗?让我们说如果我创建这个类的对象,我总是得到一个特定的值,而不调用属性或其他东西。例如:
int i = new MyIntClass(/*something*/); //will return an int
实际上我想使用默认函数来返回一些东西。也许是这样的:
class MyCalculator()
{
public double a { get; set; }
public double b { get; set; }
MyCalculator(double a, double b)
{
this.a = a;
this.b = b;
}
public double DoMath()
{
return a*b;
}
}
/* somewhere else */
double result = new MyCalculator(5.5, 8.7);
result
应该是DoMath()
的结果。那可能吗?我知道它可能不是最好的例子,但这样的事情会很好。有什么想法吗?
答案 0 :(得分:5)
你可以进行隐式演员表演。
示例(添加到类):
public static implicit operator double(MyCalculator c)
{
return c.DoMath();
}
答案 1 :(得分:4)
如果我关注您,您希望MyCalculator
拥有double
,可以将其视为。您可以使用隐式转换运算符重载来执行此操作。将其放在MyCalculator
:
public static implicit operator double(MyCalculator m)
{
return m.DoMath();
}
然而,它有点隐藏了正在发生的事情(你叫new
并得到double
)如果你是var
的重度用户,你会发现它很烦人,因为你必须要明确。
总之,如果您有非常强有力的理由,则只能使用implicit
。实际上,如果您有非常强有力的理由,则只能使用explicit
,如果您拥有非常强有力的理由,则只能使用implicit
。
与类“界面”有关的一个很好的指导方针是“对于从未看过源代码的人来说,这看起来多么明智或奇怪?”