6

我只是好奇,我知道它没有多大价值,但它就在这里......

我想我在某个地方看到过类似的东西,但我不确定。

我的意思是这样的:

var zero = Class.Zero;

我尝试查看Math课程,但它不存在。

我也知道我可以使用无符号值类型ushort.Min来获取零( 0 )值;这不是我在这里要问的...:D

4

4 回答 4

12

你的意思是default(T)?

int zero = default(int);

这表示给定类型的默认值,因为它是 0。如果您已经知道int需要零,则不应使用它,仅当您在运行时具有需要默认值的类型时才使用它。

于 2011-04-25T15:50:59.367 回答
10

有一个 forDecimal.Zero和其他一些更复杂的类型,例如TimeSpan.Zero,IntPtr.ZeroBigInteger.Zero. 但对于常规数字类型,只需使用0.

于 2011-04-25T15:53:44.557 回答
5

.Net 框架没有为像0. 如果你想使用0只是使用0

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

  • Int32.Max
  • Int32.Min
  • 双NaN

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

于 2011-04-25T15:51:21.777 回答
2

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

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

于 2011-04-25T15:58:05.767 回答