-2
爲什麼代碼不能編譯,當它做同樣的事情時。爲什麼代碼不能編譯
錯誤消息:
無法從System.Action轉換爲System.Threading.ThreadStart。
代碼:
// Compiles and works
for (int i = 0; i < 100000; i++)
{
Thread t = new Thread(() => {
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(100); Interlocked.Increment(ref Count);
});
t.Start();
}
// doesn't compile
Action action =() => {
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(100);
Interlocked.Increment(ref Count);
};
for (int i = 0; i < 100000; i++)
{
Thread t = new Thread(action);
}
你會得到什麼錯誤? –
無法從System.Action轉換爲System.Threading.ThreadStart,但不是第一個做同樣的事情 – loneshark99
我問的是,爲什麼編譯器不知道它具有相同的簽名,也就是說它沒有使用任何參數,不返回任何東西。不要這樣做,它隱含地像前一個 – loneshark99