如何使用几乎相同的名称声明多个变量

时间:2015-11-06 19:45:33

标签: c# loops variables backgroundworker

我想使用多个BackgroundWorkers来处理聊天服务器(C#)中的客户端。但我不知道如何声明多个BackgroundWorkers。每个客户的一个背景工作者。我想也许有办法像这样声明它们:



for(int counter=0; ; counter++) {
  BackgroundWorker bw_counter=new BackgroundWorker();
  bw_counter.RunWorkerAsync();
}




我想替换" counter"在" bw_counter"使用" int counter"的实际值。我不知道该怎么做。有些人有想法吗?

我搜索了一种让它工作的方法,但是我无法在SO上解决我的问题。

3 个答案:

答案 0 :(得分:2)

为什么不制作BackgroundWorker对象的通用列表?通过这种方式,您可以轻松地按编号引用它们并跟踪它们的数量。

List<BackgroundWorker> bw = new List<BackgroundWorker>();
for(int counter=0; ; counter++) {
  bw.Add(new BackgroundWorker());
  bw[counter].RunWorkerAsync();
}

答案 1 :(得分:1)

将它们存放在列表或字典中,以便稍后获取它们。动态变量命名可能仅适用于某些高级内容(Reflection.Emit或类似内容)。

var workers = new List<BackgroundWorker>();
for(int counter=0; ; counter++) 
{
  var bw = new BackgroundWorker();
  bw.RunWorkerAsync();
  workers.Add(bw);
}

var worker1 = workers.First();

答案 2 :(得分:1)

你要做的几乎就是数组的定义(或者IList,至少)。

var my_workers = new BackgroundWorker[counter];

现在你可以用数字来引用它们:

my_workers[0] = new BackgroundWorker();
my_workers[0].RunWorkerAsync();

使用原始代码创建数组的简单方法:

var workers = Enumerable.Range(0, counter)
    .Select(_ => {
        var bw = new BackgroundWorker();
        bw.RunWorkerAsync();
        return bw; })
    .ToArray();