本文介绍了十进制最小值Decimal.MaxValue:为什么使用静态只读而不使用const修饰符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在C#中,为以下类型的数字类型定义了 MinValue 字段:

In C#, MinValue field is defined for numeric types with:

静态只读十进制修饰符键入:

public static readonly decimal MinValue

const 修饰符,用于所有其他数字类型:

const modifier for all other numeric types:

//Integral signed numeric types
public const sbyte MinValue
public const short MinValue
public const int MinValue
public const long MinValue

//Integral unsigned numeric types
public const byte MinValue
public const ushort MinValue
public const uint MinValue
public const ulong MinValue

//Real numeric types
public const float MinValue
public const double MinValue

为什么 const 修改r不用于定义Decimal.MinValue字段?

Why const modifier is not used to define Decimal.MinValue field ?

备注

①同样的问题也适用于数字类型的 MaxValue 字段。

① Same question applies to numeric types MaxValue field.

②VB,C ++和F#对十进制类型也使用了不同的修饰符,因此该问题不是

② VB, C++ and F# also use different modifiers for decimal type so this question is not specific to C# language.

推荐答案

尽管将十进制 MinValue 字段描述为静态只读,C#编译器将其视为 const

Although MSDN library describes decimal MinValue field as being static readonly, C# compiler treats it as const.

如果 MinValue 字段为只读字段,则以下代码将无法编译,但实际上可以编译

If MinValue field was readonly, following code would not compile, but it actually does compile.

const十进制测试= decimal.MinValue-decimal.MinValue;

备注

①相同的答案适用于十进制类型 MaxValue 字段。

① Same answer applies to decimal type MaxValue field.

②有关更多详细信息,乔恩·斯凯特(Jon Skeet)在深入了解IL级别的恒定字段实现之间的区别:

② For further details, Jon Skeet's gives here an insight on how constant field implementation at IL level differs between:


  • 原始数值类型(整数,浮点和双精度)和

  • 非原始数字十进制类型。

这篇关于十进制最小值Decimal.MaxValue:为什么使用静态只读而不使用const修饰符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-31 08:16