通过数组创建新对象时的C#增量

Posted

技术标签:

【中文标题】通过数组创建新对象时的C#增量【英文标题】:C# increment when creating new object via Array 【发布时间】: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 回答来解决这个问题。 【参考方案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 分钟,因为在问题发布后无法立即接受答案:)

以上是关于通过数组创建新对象时的C#增量的主要内容,如果未能解决你的问题,请参考以下文章

c#从现有的对象数组创建一个新列表[关闭]

通过使用第二个数组中的引用从第一个数组中的每个对象中提取每个值来创建一个新数组(JavaScript)

C#设计模式:原型模式(Prototype)及深拷贝浅拷贝

序列的增量赋值 +=和*=

通过 C# 导入 Excel 文件时的性能瓶颈

原型模式