Jon*_*der 89 c# integer nullable
在C#中,类型实例变量的默认值是int?什么?
例如,在以下代码中,MyNullableInt如果从未明确分配,将具有什么值?
class MyClass
{
public int? MyNullableInt;
}
Run Code Online (Sandbox Code Playgroud)
(似乎答案几乎肯定是null或者0,但是那些是什么?)
Jon*_*der 124
int?- 和任何使用"type?"的可空类型的默认值 声明 - 是null.
为什么会这样:
int?是Nullable <T>(其中T是int),一个结构的类型的语法糖.(参考)Nullable<T>类型有一个bool HasValue成员,当它false使Nullable<T>实例"表现得像"一个null值时.特别是,当将with 与实际值进行比较时,将 覆盖Nullable <T> .Equals方法以返回.trueNullable<T>HasValue == falsenullnull. boolC#中变量的默认值是false (reference).因此,HasValue默认Nullable<T>实例的属性是false; 这反过来使该Nullable<T>实例本身就像null.Bri*_*den 23
分享Nullable<T>.GetValueOrDefault()使用Nullable<int>aka int?值的数学计算时特别方便的方法我感到很重要.有很多次你不需要检查HasValue财产,你可以GetValueOrDefault()改为使用.
var defaultValueOfNullableInt = default(int?);
Console.WriteLine("defaultValueOfNullableInt == {0}", (defaultValueOfNullableInt == null) ? "null" : defaultValueOfNullableInt.ToString());
var defaultValueOfInt = default(int);
Console.WriteLine("defaultValueOfInt == {0}", defaultValueOfInt);
Console.WriteLine("defaultValueOfNullableInt.GetValueOrDefault == {0}", defaultValueOfNullableInt.GetValueOrDefault());
Run Code Online (Sandbox Code Playgroud)