C# 在任何Microsoft.NET类中是否存在零[0]常量?

C# 在任何Microsoft.NET类中是否存在零[0]常量?,c#,math,constants,zero,.net,C#,Math,Constants,Zero,.net,我只是好奇,我知道它没有多大价值,但它来了 我想我在什么地方见过类似的东西,但我不确定 我的意思是这样的: var zero = Class.Zero; 我试着看数学课,但是没有 我还知道我可以使用无符号值类型,如ushort.Min来获得零(0)值;这不是我要问的…:D您的意思是默认值(T) 这表示给定类型的默认值,对于int这是0。但是,如果您知道您已经需要零,则不应该使用此选项,仅当您在运行时有一个需要默认值的类型时才可以使用。Net Framework没有为0等值定义常量。如果您想使用

我只是好奇,我知道它没有多大价值,但它来了

我想我在什么地方见过类似的东西,但我不确定

我的意思是这样的:

var zero = Class.Zero;
我试着看
数学
课,但是没有

我还知道我可以使用无符号值类型,如
ushort.Min
来获得零(0)值;这不是我要问的…:D

您的意思是
默认值(T


这表示给定类型的默认值,对于
int
这是0。但是,如果您知道您已经需要零,则不应该使用此选项,仅当您在运行时有一个需要默认值的类型时才可以使用。

Net Framework没有为
0
等值定义常量。如果您想使用
0
只需使用
0

.Net Framework中定义的数值常量通常围绕给定数值类型的限制、具有特殊相关性的值或零值需要特殊/复杂初始化的情况。比如说

  • Int32.Max
  • Int32.Min
  • 双。南

文本
0
不适合大多数数字类型的这些类别(
Decimal
是一个例外)

有一个用于,还有一些其他更复杂的类型,如,和。但是对于常规的数字类型,只需使用
0

一些不可变的引用类型具有预定义的“空”值实例。例如,String定义String.Empty。之所以这样做是因为一个有效的字符串——即使是没有字符的字符串——必须引用一个有效的堆对象,但是如果有一千个空字符串变量,它们可能都引用同一个堆对象。除非应用程序完全不使用任何空字符串,否则在应用程序启动时创建一个空字符串实例并允许所有需要空字符串的人共享它将比每次需要空字符串时创建一个新的空字符串对象更有效


值类型不存在这样的好处。虽然声明了一些值类型常量(例如Math.Pi),但它们的声明是为了方便,而不是为了效率。说“myDouble=Math.Pi”并不比“myDouble=3.14159265358979323846264338327950288419716939937510”更有效——只是更容易阅读和验证(如果第一个“328”被错误地键入为“238”,查看上述代码的人会注意到吗)?如果你想要一个浮点常量零,最自然、最容易理解的符号就是0。

它被称为0……你害怕0的值会改变吗?我真的很好奇为什么你需要这样一个常量?你需要小数点零而不是仅仅<代码>0?@Karl:正如我说的,它没有多大价值。我更喜欢使用框架中已经存在的(常量),而不是自己键入。现在我正在使用一个视图(ASP.NETMVC),我想向用户显示$0.00的值。碰巧我使用的是
decimal
值类型,只是忘记了查看decimal类。:)哦<代码>十进制。零是我在问题中提到的。我只是不记得它在哪里您的观点理解得很好,但我注意到不同版本的框架在是否跨程序集内联空字符串方面有所不同。他们中的一些有,一些没有。我不确定是什么促使了这一变化。而且,双精度只能精确到小数点后15位,所以前328位是否被误打为238位无关紧要;无论如何,编译器都将丢弃这些数字。@Eric Lippert:我的主要观点是值类型常量与引用类型“常量实例”不同。我不记得双精度值到底有多远了,只是抓取了一个方便的pi参考值。math.pi的值在vs中显示为“3.1415926535897931”,但下一个较大的浮点数是“3.1415926535897936”,因此我恰好选择了一组刚好超过重要点的数字。哦,好吧。
int zero = default(int);