初始化系统.十进制 v 初始化十进制数据类型



我习惯于像这样使用十进制数据类型:

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.DecimalCost也是有效的。

我也注意到我不能这样做:Decimal cost = new Decimal(30M);

是的,你也不能做Cost cost = new Cost(30M);,因为decimal没有定义这样的构造函数重载。原因是,如果您手头已经有Decimal/Cost,为什么还要再次更新它?Cost cost = 30M;会做得很好。

另请注意,Cost cost = 30;也很好,编译器将为您执行隐式转换。

  1. 是的,您需要使用完全限定的类型名称来使用别名。从文档中:

    创建 using 别名,以便更轻松地将标识符限定为命名空间或类型。using 别名指令的右侧必须始终是完全限定的类型,而不考虑其前面的 using 指令。

    值得注意的是,使用类型别名非常罕见,尤其是在使用像decimal这样的内置值类型时。我不建议你这样做。

  2. 你不能做new Decimal(30M),因为该类型没有采用小数的构造函数,毕竟这是没有意义的,因为你可以简单地这样做(其中M限定符是可选的):

    Decimal cost = 30M;
    

最新更新