目前我有这门课
public class Currency
{
private int _Amount;
public Currency(){... }
public Currency(int amount){_Amount = amount;}
public override string ToString()
{
return _Amount + " Gold.";
}
}
我希望这个类具有整数的所有功能,所以我可以做这样的事情
Currency curr = new Currency();
Currency curr2 = new Currency(100);
curr = 50;
curr += 50;
curr += curr2;
我在这里找到了一些我需要的东西:Integer c++ wrapper 但这适用于C ++。有人能告诉我我是如何用C#做的吗?
public operator Currency() { return _Amount; }
不起作用,也不在任何地方添加隐式/显式。
答案 0 :(得分:2)
class Currency
{
...
// User-defined conversion from Digit to double
public static implicit operator int(Currency d)
{
return d._Amount;
}
}
有关详细信息,请参阅implicit (C# Reference)。您要检查的第二件事是operator overloading。
答案 1 :(得分:0)
你想要的是将它声明为struct(因此它不会被装箱/取消装箱,也不能为空,除非你将其标记为Nullable)并且具有隐式/显式转换器(可以在没有强制转换的情况下转换)
public struct Currency
public static implicit operator Currency(decimal value)
{
return new Currency(value);
}
public static implicit operator decimal(Currency me)
{
return me.value;
}