如何声明多个名称几乎相同的变量
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();
我想使用多个 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();