我正在尝试使用const修饰符,同时探索过多的C#教程,并const在这样的类中放置了一堆修饰符,而不是在任何地方实际使用它们:
class ConstTesting
{
const decimal somedecimal = 1;
const int someint = 2;
...
}
Run Code Online (Sandbox Code Playgroud)
有了这个类,我收到以下警告(使用csc):
ConstTesting.cs(3,19):警告CS0414:分配了字段'ConstTesting.somedecimal'但它的值从未使用过
我不明白的是,我只得到警告const decimal.在const int没有给我任何警告,不分先后顺序或类似的东西的.
我的问题是,为什么会发生这种情况?为什么我的csc编译器会首先警告我a const,如果更重要的是为什么它只会警告我const decimal何时const int以完全相同的方式编写?到底是什么int和decimal它有什么区别呢?
请注意:
小智 14
Int是固定大小的简单值类型.由于规模,十进制有点复杂.如果您反编译代码,您会发现它看起来像这样:
[DecimalConstant(0, 0, 0, 0, 1)]
private readonly static decimal somedecimal;
private const int someint = 2;
Run Code Online (Sandbox Code Playgroud)
其中十进制不是常量,但有一个DecimalConstant属性由mscorlib.dll提供,其中十进制的真正定义是:
public struct Decimal : IFormattable, IComparable, IConvertible,
IDeserializationCallback, IComparable<decimal>, IEquatable<decimal>
Run Code Online (Sandbox Code Playgroud)
本博客文章中对此主题进行了更深入的探索.
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |