设置好了

本文关键字:设置 | 更新日期: 2023-09-27 18:32:06

在这里得分,我正在用 c# 开发一个应用程序,我遇到了一个问题,我试图递增和整数,但我似乎每次都得到相同的数字。

我有一个类"class1",其中包含以下内容:

public class class1
{
    public int id;
    public int Outid
    {
        get { return id; }
        set { id = value; }
    }
    public string OutputName
    {
        get { return Outid.ToString("000"); }
        set { this.Outid.ToString(); }
    }
}

另一个,简而言之,它包含一个循环浏览工作簿工作表的方法,在该方法中,有两行与我的问题相关

class1.id++;
console.write(class1.id)

写行总是 1,我已经玩了几个小时了,看不到树林。我想这必须与class1的属性有关。

设置好了

如果每次都重新实例化类,则值将始终为 1,例如:

for(var i = 0; i < 10; i++)
{
    Class1 class1 = new Class1();
    class1.id++;
    Console.WriteLine(class1.id);
}

这将向控制台输出 1, 10 次,因为在每次迭代中,您都会创建一个新Class1id字段始终以默认值 0 开头。

但是,如果实例化一次,然后重用该类,则 id 字段将按预期更新:

Class1 class1 = new Class1();
for(var i = 0; i < 10; i++)
{
    class1.id++;
    Console.WriteLine(class1.id);
}

这会将数字 1 到 10 输出到控制台。当然,如果您使用属性而不是字段,同样的事情也有效:

Class1 class1 = new Class1();
for(var i = 0; i < 10; i++)
{
    class1.Outid++;
    Console.WriteLine(class1.Outid);
}

如果你写class1你说你想指示一个静态字段/属性/方法。必须创建类的实例。

我宁愿建议你有类似的东西

public class Class1
{
    public int id { get; set; }
}

然后你可以这样称呼它

var c = new Class1();
for(var i = 0; i < 10; i++)
{
   c.id += 1;
}
Console.Writeline(c.id.ToString());