0

这里的分数,我正在用 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.

4

3 回答 3

3

如果您每次都重新实例化该类,则该值将始终为 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);
}
于 2013-09-20T15:37:45.367 回答
0

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

于 2013-09-20T15:40:00.753 回答
0

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

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());
于 2013-09-20T15:45:20.600 回答