c# - 可空类型 "int?"(包括问号)的默认值是多少?

在 C# 中,int 类型的类实例变量的默认值是多少?

例如,在下面的代码中,如果 MyNullableInt 从未被显式赋值,它会有什么值?

class MyClass
{
    public int? MyNullableInt;
}

(似乎答案几乎肯定是 null0,但究竟是哪一个?)

最佳答案

int? 的默认值-- 对于任何使用“type?”的可空类型声明——是null .

为什么会这样:

  • int?是 Nullable<T> 类型的语法糖(其中 T 是 int ),一个结构。 ( reference )
  • Nullable<T>类型有一个 bool HasValue成员(member),当false , 使得 Nullable<T>实例“表现得像”一个 null值(value)。特别是 Nullable<T>.Equals method被覆盖返回 trueNullable<T>HasValue == false与实际 null 进行比较值(value)。
  • 来自 C# Language Specification 11.3.4 ,结构实例的初始默认值是该结构的所有值类型字段设置为其默认值,并且该结构的所有引用类型字段设置为 null .
  • 默认值 bool C# 中的变量是 false (reference)。因此,HasValue默认属性 Nullable<T>实例是 false ;这反过来又使Nullable<T>实例本身就像null .

关于c# - 可空类型 "int?"(包括问号)的默认值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49273551/

相关文章:

android - React Native StackNavigator 在重新进入时消失

tensorflow - 如何在 Estimator 之外使用 tensorflow.feature

python - LineString 和 Point 之间的距离

java - Spring Boot - 无法加载 keystore 类型 [PKCS12]

php - 在 Laravel 5 迁移中更新表并添加数据

python - Keras 文本分类 : Validation Accuracy doesn't

angular - 如何将 与路由一起使用?

json - Microsoft Graph API 正在为 MSA 用户返回未知错误

dart - 将谷歌日历插入 flutter 移动应用程序

excel-formula - 在单元格中使用逗号分隔值作为下拉选项[Excel 2013]