You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 23:05:21