为了账号安全,请及时绑定邮箱和手机立即绑定

C#中的decimal数据类型为什么不能直接赋值?

C#中的decimal数据类型为什么不能直接赋值?

C#
回首忆惘然 2019-03-13 11:09:17
C#中的decimal数据类型为什么不能直接赋值?
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

不是不能直接赋值,而是写法的问题,直接写 3.14 编译器会认为这是一个双精度数而非decimal,而从double到decimal是不可以隐式转换的,所以会报错,后面加上了M以后就表示这是告诉编译器这就是个decimal,所以可以直接赋值。

至于为什么双精度型(double)到实数(decimal)不可隐式转换,是因为后者精度更高,但是其数值表示范围反倒不如前者大。

查看完整回答
反对 回复 2019-03-15
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

有几种变量在创建时自动初始化为它们的默认值。对于类类型和其他引用类型的变量,此默认值为 null。但是,由于结构是不能为 null 的值类型,结构的默认值是通过将所有值类型字段设置为它们的默认值,并将所有引用类型字段设置为 null 而产生的值。如上所述,结构的默认值就是将所有值类型字段设置为它们的默认值并将所有引用类型字段设置为 null 而产生的值。由于这个原因,结构不允许它的实例字段声明中含有变量初始值设定项。此限制只适用于实例字段。在结构的静态字段声明中可以含有变量初始值设定项。

查看完整回答
反对 回复 2019-03-15
?
holdtom

TA贡献1805条经验 获得超10个赞

1、在结构体定义外,不能直接用a.b = 1;这样的语句赋值,这是因为C#中结构体成员变量默认私有

2、在定义结构体的代码中,不能赋初始值,这一点就有点复杂了,首先要搞清楚为什么类成员变量可以赋初始值,类声明中的赋值语句会被编译器自动生成到构造函数中,然而结构体的默认无参构造函数不允许重载,那为什么C#不允许重载结构体的默认无参构造函数呢,你可以参照这个:网页链接


查看完整回答
反对 回复 2019-03-15
  • 3 回答
  • 0 关注
  • 2116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信