【问题标题】:What are the "default values" that .Net sets all of the values in a class to if the class does not have a constructor?如果类没有构造函数,.Net 将类中的所有值设置为什么“默认值”?
【发布时间】:2020-02-06 22:12:09
【问题描述】:

在使用 .Net 的 c# 中,如果您创建一个具有未初始化字段且没有构造函数的类,则使用 new 关键字创建该类的实例,.Net 将该字段的值设置为“默认值”。这到底是什么意思呢?是否存在将值设置为 Null 的情况?

【问题讨论】:

  • "是否存在将值设置为 Null 的情况?"是的。引用类型将默认为 null。
  • 基本上默认为0,根据类型表示不同的东西。对于 null 的引用,对于值类型,它是任何值映射到所有设置为 0 的位的等价物。所以对于数字类型,它是 0 或布尔值,它是 false。
  • default(whateverType),具体来说。正如 juharr 所说,对于任何引用类型,这将是 null,对于任何数字类型,0 的适当值,对于 boolfalse,等等。
  • .Net 用0 填充为类实例分配的内存。所以它将是null00.0false 等。

标签: c# .net class default-constructor


【解决方案1】:

就像在 cmets 中提到的 Johnny 一样,this table lists the default values 用于 .NET 类型。引用类型字段的默认值为null

【讨论】:

  • 感谢表,很有趣! (在过去,我会把它设为“最爱”,但现在已经过时了)......
【解决方案2】:

默认值是按类型定义的。一般来说,任何引用类型都会默认为null

您可以根据documentation 中的类型找到完整的默认值列表。

此外,您可以通过显式使用 default keyword 并检查(例如在调试器中)返回的值来凭经验找出:

var x = default(string);
var y = default(int);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2018-02-16
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多