【C#】【语法】使用默认构造函数初始化类的实例时,各种成员变量的初始值
默认构造函数初始化类的实例
首先摆出这个概念,其实就是最常见的:
MyClass instance = new MyClass(); // 使用默认构造函数
可空类型与不可空类型
然后需要明确一下这两个概念。
在C#中,可空类型(nullable types)是指那些可以被赋值为 null
的类型。C# 中有两种主要类型的可空性:
-
值类型的可空性:
- 基本类型:如
int
、float
、decimal
等。 - 枚举类型:如
enum
。 - 结构体:如
struct
。
当您需要一个值类型可以被赋值为
null
时,可以使用可空类型。例如,int?
表示一个可为空的整型。这里的?
表示该类型可以是null
。int? nullableInt = null; float? nullableFloat = null; decimal? nullableDecimal = null;
- 基本类型:如
-
引用类型的可空性:
- 类类型:如
class
。 - 接口类型:如
interface
。 - 字符串类型:如
string
。 - 数组类型:如
int[]
。
引用类型默认就可以被赋值为
null
,因此它们本身就是可空的。例如:string nullableString = null; object nullableObject = null;
- 类类型:如
这二者的区别是:
可空的值类型如 int
、float
、decimal
等,只有在后面加上问号时,才是可空类型(值类型的可空版本);
而引用类型默认是可以被赋值为 null
的,这意味着它们本身就是可空的。因此,不需要也不应该在引用类型的声明后面加上问号(?
)。
因此,可空类型就是:1.值类型的可空版本;2.引用类型;不可空类型就是:普通的值类型。
使用默认构造函数初始化类的实例时,各种成员变量的初始值
有了上面的基础,以下结论也容易理解:
-
值类型成员变量(非可空类型):在类中定义的值类型成员变量默认会被初始化为其类型的默认值。例如:
int
的默认值是0
。bool
的默认值是false
。float
的默认值是0.0f
。
-
可空类型成员变量(值类型的可空版本):在类中定义的可空类型成员变量默认会被初始化为
null
。例如:int?
的默认值是null
。float?
的默认值是null
。
-
引用类型成员变量(如
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 }