繁体   English   中英

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

[英]How to declare multiple variables with almost the same name

我想使用多个BackgroundWorkers在聊天服务器(C#)中处理客户端。 但是我不知道如何声明多个BackgroundWorkers。 每个客户一名背景工作人员。 我认为也许可以这样声明它们:

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

我想将“ bw_counter”中的“ counter”替换为“ int counter”的实际值。 我不知道该怎么做。 有些人有想法吗?

我一直在寻找使它正常工作的方法,但是我无法解决解决问题的SO线程。

为什么不只列出BackgroundWorker对象的通用列表呢? 这样,您可以轻松地按编号引用它们并跟踪有多少个。

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

将它们塞入列表或字典中,以便稍后使用。 动态变量命名可能仅适用于某些高级内容(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();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM