[英]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.