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

How to declare multiple variables with almost the same name

我想使用多个 BackgroundWorker 来处理聊天服务器 (C#) 中的客户端。但我不知道如何声明多个 BackgroundWorkers。每个客户一名后台工作人员。我认为也许有一种方法可以像这样声明它们:

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

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

我搜索了一种让它工作的方法,但我无法在 SO 上找到可以解决我的问题的线程。

将它们放入列表或字典中,以便稍后获取。动态变量命名可能只适用于一些高级的东西(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();

为什么不制作一个通用的 BackgroundWorker 对象列表?这样您就可以轻松地按编号引用它们并跟踪它们的数量。

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

您尝试做的几乎是数组的定义(或至少 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();