在C#中已声明Employee类型变量,为何仍需用new关键字创建类实例?
using System; namespace Hello { class TestEmployee { static void Main() { Employee employee = new Employee(); employee.salary = 1000; employee.bonus = 100; employee.CacalculateTotalPay(); Console.ReadKey(); } } class Employee { public double salary; public double bonus; public void CacalculateTotalPay() { Console.WriteLine(salary + bonus); } } }
为什么声明Employee类型变量后仍需用new创建实例
声明Employee employee只是定义了一个引用类型的变量,它本质上是一个指向内存地址的"占位符",初始值为null,并没有关联任何实际的对象数据。
而new Employee()的核心作用是:
- 在堆内存中为Employee类的所有成员(
salary、bonus等)分配实际存储空间 - 执行类的默认无参构造函数完成初始化
- 返回这个新创建实例的内存地址,赋值给
employee变量
大白话解释:
- 变量声明相当于"告诉程序我需要一个能装Employee对象的容器"
new关键字则是"实际造出这个容器,并把它交给变量管理"
如果跳过new直接访问employee.salary,程序会抛出NullReferenceException——因为变量根本没指向任何实际存在的对象,自然找不到对应的成员数据。
内容的提问来源于stack exchange,提问作者Amirreza
相关产品推荐
相关产品推荐

