我遵循将数据传递给Joseph Albahari 的“C# 中的线程”的“第 1 部分:入门”的线程。
即段落:
====== 报价开始
"使用这种方法,您可以将任意数量的参数传入(到哪里?)方法。您甚至可以将整个实现包装在一个多语句 lambda 中:
new Thread (() =>
{
Console.WriteLine ("I'm running on another thread!");
Console.WriteLine ("This is so easy!");
}).Start();*
在 C# 2.0 中,您可以使用匿名方法几乎同样轻松地做同样的事情:
new Thread (delegate()
{
...
}).Start();
============ 引用结束
也就是说,我已经尝试过“轻松”为:
new Thread
(delegate
{
Console.WriteLine("I'm running on another thread!");
Console.WriteLine("This is so easy!");
}
).Start();
但它会产生错误:
以下方法或属性之间的调用不明确:“System.Threading.Thread.Thread(System.Threading.ThreadStart)”和“System.Threading.Thread.Thread(System.Threading.ParameterizedThreadStart)”
您如何消除代码的歧义以便运行它?已回答(遗漏了括号。无论如何,这不是最初的主要问题)- 另外,我不太了解空列表
() =>
指向/应用到哪里? - 那么,“您可以将任意数量的参数传递给该方法”的方法是什么?
- 如何理解通过空列表传递(任意数量)参数?
更新(针对 Jon Skeet 的评论):
不,我没有坚持使用 C# 2。
与上一段相同的问题:
========== 引用开头:
"将参数传递给线程的目标方法的最简单方法是执行一个 lambda 表达式,该表达式使用所需的参数调用该方法:
static void Main()
{
Thread t = new Thread ( () => Print ("Hello from t!") );
t.Start();
}
static void Print (string message)
{
Console.WriteLine (message);
}
使用这种方法,您可以将任意数量的参数传递给该方法。”
=============== 引用结束
更新2 :
最完整的答案是@Lee的IMO,尽管我将另一个答案标记为正确的答案是为了立即回答我什至最初没有问过的问题-如何将某些内容放在空括号中(我已经害怕通过列表来称呼它或通过参数)