是否可以在for循环中包含将在其中声明的变量名称中的初始化程序?

时间:2017-08-11 11:53:24

标签: c# loops

static void Main(string[] args)
{
    for (int i = 0; i < int.MaxValue; i++)
    {
        client client[i] = new client();
    }
}

我需要让循环添加一个自动变量,并在每个循环中声明。该变量将被称为client1然后client2等。或者是否有更好的方法来循环方法?

2 个答案:

答案 0 :(得分:1)

为什么不使用List<clinet>代替为n次迭代创建n个变量:

var clients = new List<client>();
for (int i = 0; i < int.MaxValue; i++)
{
    clients.Add(new client());
}

甚至更简单:

var clients = Enumerable.Range(0, int.MaxValue).Select(x => new client()).ToList();

或者更简单:

var clients = Enumerable.Repeat(new client(), int.MaxValue);

现在您可以通过索引访问任何client,例如:

client c = clients[0];

无论如何要知道您正在创建int.MaxValueclient个实例。取决于client正在燃烧你的记忆。

注意:请考虑命名约定,例如:通过调用类似客户端类UpperCase的类:Client

答案 1 :(得分:0)

如果您确实需要访问所有变量,@ HimBromBeere是正确的。但是,例如,如果您在Client类中有静态字段并且只需要当前变量,则可以执行以下操作:

while(true) { var c = new Client(); }

在这种情况下,您可以检查当前状态。例如:c.Name;将为您提供有关客户端的信息,该客户端在当前迭代中处理。如果您为每个客户完成所有员工,并且不再需要存储有关其他客户的信息,它将会起作用。

<强>更新 我的回答含糊不清。我的意思是Client构造函数可以执行以下操作:

class Client {
    static int count = 0;
    public string Name { get; set; }
    public Client() {
        Name = string.Format("client{0}", count++);
    }
}

在这种情况下,类具有静态count,这表示我们拥有多少客户端。我们在代码中没有使用它,但我们可以通过他的名字使用当前客户端来理解它。