我习惯于像这样使用十进制数据类型:
decimal Cost = 30M;
这会用 £30 初始化小数(£ 在我的应用程序的上下文中)。 我计划在我的应用程序中使用 Decimal 的类型别名,如下所示:
using Cost = System.Decimal
我相信在使用类型别名时,我必须使用对象而不是基元类型。 如果不正确,请告诉我?
我还注意到我不能这样做:
Decimal cost = new Decimal(30M);
我必须这样做:
Decimal cost = new Decimal(30);
上面的初始化代码是否适合货币?
这会用 £30 初始化小数(£ 在我的应用程序的上下文中)。我计划在我的应用程序中使用 Decimal 的类型别名,如下所示:
using Cost = System.Decimal
好的,这是一个有效的选择。
我相信在使用类型别名时,我必须使用对象而不是基元类型。如果不正确,请告诉我?
我不确定你在问什么,但如果你使用类型别名,整个想法就是使用它:
var cost = new Cost(10);
Rememnber,类型别名就是类型别名;只要你能System.Decimal
,Cost
也是有效的。
我也注意到我不能这样做:
Decimal cost = new Decimal(30M);
是的,你也不能做Cost cost = new Cost(30M);
,因为decimal
没有定义这样的构造函数重载。原因是,如果您手头已经有Decimal
/Cost
,为什么还要再次更新它?Cost cost = 30M;
会做得很好。
另请注意,Cost cost = 30;
也很好,编译器将为您执行隐式转换。
-
是的,您需要使用完全限定的类型名称来使用别名。从文档中:
创建 using 别名,以便更轻松地将标识符限定为命名空间或类型。using 别名指令的右侧必须始终是完全限定的类型,而不考虑其前面的 using 指令。
值得注意的是,使用类型别名非常罕见,尤其是在使用像
decimal
这样的内置值类型时。我不建议你这样做。 -
你不能做
new Decimal(30M)
,因为该类型没有采用小数的构造函数,毕竟这是没有意义的,因为你可以简单地这样做(其中M
限定符是可选的):Decimal cost = 30M;