设置好了
本文关键字:设置 | 更新日期: 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 次,因为在每次迭代中,您都会创建一个新Class1
其id
字段始终以默认值 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());