На данный момент у меня этот класс
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++, но это для c++. Может ли кто-нибудь сказать мне, как я это делаю на С#?
public operator Currency() { return _Amount; }
Не работает и не добавляет неявного/явного в любом месте.
class Currency
{
...
// User-defined conversion from Digit to double
public static implicit operator int(Currency d)
{
return d._Amount;
}
}
См. Неявный (ссылка на С#) для получения дополнительной информации. Второе, что вы хотите проверить, - перегрузка оператора.
Вы хотите объявить его как struct (поэтому он не получает boxed/unboxed и не может быть null, если вы не отмечаете его 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;
}