【问题标题】:C# increment when creating new object via Array通过数组创建新对象时的C#增量
【发布时间】:2020-07-22 04:05:13
【问题描述】:

所以我通过数组在 Console 类中添加/创建对象:

string[] console_available = { "Yes", "Yes", "Yes", "Yes", "Yes" };
for (int i = 0; i < console_available .Length; i++)
        {
            Classes.Console console = new Classes.Console(console_available[i]);
        }

在类本身中,我有 int console_id,我想增加它,但由于某种原因,它只使用下面的构造函数增加一次:

public int ConsoleID { get; set; } = 0;
public string Available { get; set; }

public Console(string available)
    {
        ConsoleID++;
        this.Available = available;
    }

所以本质上它都是“1 是”,我需要它是“1 是”、“2 是”、“3 是”。

我真的不想走多行代码来创建对象的路线,例如:

Classes.Console console  = new Classes.Console("Yes");
Classes.Console console2 = new Classes.Console("Yes");
Classes.Console console3 = new Classes.Console("Yes");

【问题讨论】:

  • 在您的循环中,您创建了五个对象,但将它们扔掉,因为您不会在任何地方使用它们。
  • 为什么不向构造函数添加第二个参数(ConsoleID)?
  • ConsoleID 特定于每个实例。您的构造函数正在添加到变量中,但每次您声明一个新实例时,它都会将其设置回 0,因为这是硬编码的。把它变成一个static 变量像@Sean 回答来解决这个问题。

标签: c# arrays class object constructor


【解决方案1】:

您需要一个静态变量,您可以递增并存储在成员变量中:

private static int _ID = 1;

public int ConsoleID { get; set; };
public string Available { get; set; }

public Console(string available)
{
    ConsoleID = _ID++;
    this.Available = available;
}

【讨论】:

  • 简单有效。谢谢!
  • 现在接受!不得不再等 5 分钟,因为在问题发布后无法立即接受答案:)
猜你喜欢
  • 2014-01-26
  • 2021-09-24
  • 2023-02-08
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多