为什么我应该使用隐式/显式运算符
本文关键字:运算符 我应该 为什么 | 更新日期: 2023-09-27 18:27:20
检查以下代码:
class Money
{
public Money(decimal amount)
{
Amount = amount;
}
public decimal Amount { get; set; }
public static implicit operator decimal(Money money)
{
return money.Amount;
}
public static explicit operator int(Money money)
{
return (int)money.Amount;
}
}
我不明白它在我的代码中会有什么用处,难道我不能做一个像这样的方法吗
public static int returnIntValueFrom(Money money)
{
return (int)money.Amount;
}
实施起来不是更容易、更清晰吗?
这样做是为了允许将钱添加到其他钱中。如果没有这段代码,这将导致编译器错误,"运算符'+'不能应用于'Money'和'int'类型的操作数"
Money money = new Money(5.35m);
decimal net = money + 6;
有了casting操作符,就可以在不引发异常的情况下进行这些类型的转换。它可以帮助提高可读性,并允许多态性,例如,不同的货币可以实现自己类型的强制转换。