Some immutable reference types have predefined instances for null values. For example, String defines String.Empty. This is because the actual string — even one without characters — must refer to the actual heap object, but if there are a thousand empty String variables, they can all refer to the same heap object. If the application does not use any empty strings at all, creating one instance of the empty string at application startup and sharing it with everyone who needs an empty string will be more efficient than creating a new empty string object each time one is needed.
Such a value will not exist with type values. Although there are certain constants of type values declared (for example, Math.Pi), declaring them for convenience rather than efficiency. Saying "myDouble = Math.Pi" is no more effective than "MyDouble = 3.141592653589793238462643399327950288419716939937510 #" - is it easy to read and check (would anyone look at the above code if the first "328" were sealed as "238")? If you want the floating-point constant to be zero, the most natural and easy to read notation would be just 0 #.
source share