The code
public class MyClass
{
public const Decimal CONSTANT = 0.50; // ERROR CS0664
}
产生此错误:
错误CS0664:无法隐式转换为 double 类型的文字
输入“十进制”;使用“M”后缀创建此类型的文字
据记录 http://msdn.microsoft.com/en-us/library/364x0z75%28v=vs.80%29.aspx。但这有效:
public class MyClass
{
public const Decimal CONSTANT = 50; // OK
}
他们为什么禁止第一个?我觉得很奇怪。
文字的类型without the m
后缀是double
- 就这么简单。你不能初始化一个float
这样要么:
float x = 10.0; // Fail
文字的类型应该从文字本身就清楚,并且它分配给的变量的类型应该可以分配给from该文字的类型。所以你的第二个例子是有效的,因为有一个隐式转换int
(文字的类型)到decimal
。没有隐式转换double
to decimal
(因为它可能会丢失信息)。
就我个人而言,如果有的话我会更喜欢它no默认值或者如果默认值是decimal
,不过那是另一回事了……
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)