C#中实例与引用变量的区别:两段代码的差异及实例创建疑问
两段C#代码的差异分析
关于第一段代码 Sample a = new Sample();
- 这段代码里的
a是Sample类型的实例引用。这条语句一次性完成三个操作:- 声明一个类型为
Sample的变量a - 通过
new Sample()调用Sample类的构造函数,创建出一个Sample类型的实例 - 将这个实例的引用赋值给变量
a
最终a指向一个有效的Sample实例,可以直接调用该实例的方法、属性等成员。
- 声明一个类型为
关于第二段代码 Sample a
- 这条语句不会创建Sample类型的实例,它仅仅是声明了一个类型为
Sample的变量a,没有做初始化:- 如果
a是方法内的局部变量,它会处于未初始化状态,直接使用会触发编译错误; - 如果
a是类的成员变量,若Sample是引用类型,a会被默认初始化为null;若Sample是值类型,a会被初始化为该值类型的默认值(比如int类型默认是0)。
- 如果
两段代码的核心区别
| 语句 | 操作内容 | 变量最终状态 |
|---|---|---|
Sample a = new Sample(); | 声明变量 + 创建实例 + 赋值 | a指向有效的Sample实例 |
Sample a | 仅声明变量 | 局部变量未初始化;成员变量为null(引用类型)或值类型默认值 |
内容的提问来源于stack exchange,提问作者sampath s
相关产品推荐
相关产品推荐

