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

为何创建两个C#类实例时私有变量num仅递增一次?

问题:类实例的私有变量无法跨实例累计递增

我编写了一个Program1类,并创建了两个该类的实例,但私有变量num每次输出都是1,无法实现累计递增。以下是我的代码及控制台输出:

原代码

using System;

Program1 one = new Program1("name1");
Program1 two = new Program1("name2");

class Program1
{
    private int num = 0;

    public Program1(string name)
    {
        num++;
        Console.WriteLine($"It is your {num} object");
        Console.WriteLine($"{name} is your object");
    }
}

控制台输出

It is your 1 object
name1 is your object
It is your 1 object
name2 is your object

原因分析

你定义的num是实例字段,每个Program1的实例都会独立拥有一个num的副本。每次创建新实例时,这个副本都会被重新初始化为0,随后在构造函数里自增为1,因此每个实例输出的num值都是1。

解决方案

如果需要让num统计所有实例的创建数量,只需将num改为静态字段(添加static修饰符)。静态字段属于类本身,所有实例共享同一个值,不会随新实例创建而重新初始化:

using System;

Program1 one = new Program1("name1");
Program1 two = new Program1("name2");

class Program1
{
    // 改为静态字段,所有实例共享
    private static int num = 0;

    public Program1(string name)
    {
        num++;
        Console.WriteLine($"It is your {num} object");
        Console.WriteLine($"{name} is your object");
    }
}

修改后的控制台输出:

It is your 1 object
name1 is your object
It is your 2 object
name2 is your object

内容的提问来源于stack exchange,提问作者pyleky11

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:30:54