【C#】【语法】使用默认构造函数初始化类的实例时,各种成员变量的初始值

默认构造函数初始化类的实例

首先摆出这个概念,其实就是最常见的:

MyClass instance = new MyClass();  // 使用默认构造函数

 

可空类型与不可空类型

然后需要明确一下这两个概念。

在C#中,可空类型(nullable types)是指那些可以被赋值为 null 的类型。C# 中有两种主要类型的可空性:

  1. 值类型的可空性:

    • 基本类型:如 intfloatdecimal 等。
    • 枚举类型:如 enum
    • 结构体:如 struct

    当您需要一个值类型可以被赋值为 null 时,可以使用可空类型。例如,int? 表示一个可为空的整型。这里的 ? 表示该类型可以是 null

     
    int? nullableInt = null;
    float? nullableFloat = null;
    decimal? nullableDecimal = null;
    
    
  2. 引用类型的可空性:

    • 类类型:如 class
    • 接口类型:如 interface
    • 字符串类型:如 string
    • 数组类型:如 int[]

    引用类型默认就可以被赋值为 null,因此它们本身就是可空的。例如:

    string nullableString = null;
    object nullableObject = null;

     

这二者的区别是:

可空的值类型如 intfloatdecimal 等,只有在后面加上问号时,才是可空类型(值类型的可空版本);

而引用类型默认是可以被赋值为 null 的,这意味着它们本身就是可空的。因此,不需要也不应该在引用类型的声明后面加上问号(?)。

 

因此,可空类型就是:1.值类型的可空版本;2.引用类型;不可空类型就是:普通的值类型。

 

使用默认构造函数初始化类的实例时,各种成员变量的初始值

有了上面的基础,以下结论也容易理解:

  1. 值类型成员变量(非可空类型):在类中定义的值类型成员变量默认会被初始化为其类型的默认值。例如:

    • int 的默认值是 0
    • bool 的默认值是 false
    • float 的默认值是 0.0f
  2. 可空类型成员变量(值类型的可空版本):在类中定义的可空类型成员变量默认会被初始化为 null。例如:

    • int? 的默认值是 null
    • float? 的默认值是 null
  3. 引用类型成员变量(如 string, class 类型等):在类中定义的引用类型成员变量默认会被初始化为 null

举例:

public class MyClass
{
    public int IntMember;       // 默认值为 0
    public int? NullableInt;    // 默认值为 null
    public string StringMember; // 默认值为 null
    public bool BoolMember;     // 默认值为 false
    public float FloatMember;   // 默认值为 0.0f
    public float? NullableFloat;// 默认值为 null
}

 

 

posted @ 2024-08-28 17:20  ban_boi  阅读(111)  评论(0编辑  收藏  举报