几道C#题
一、以下代码共创建了几个Task实例?
var tasks = Enumerable.Range(1, 2).Select(i => new Task(() =>
{
Debug.WriteLine(i);
})).ToList();
var ts1 = tasks.ToList();
var ts2 = tasks.ToArray();
二、找错误:
var tasks = Enumerable.Range(1, 2).Select(i => new Task(() =>
{
Debug.WriteLine(i);
}));
tasks.ToList().ForEach(t => t.Start());
Task.WaitAll(tasks.ToArray());
Console.WriteLine("完毕");
三、以下代码在vs2010中的执行结果是?
var sequence = Enumerable.Range(1, 2).ToList();
sequence.Select(i => new Action(() => Debug.WriteLine(i))).ToList().ForEach(a => a());
Action prints = null;
foreach (var i in sequence)
{
prints += () => Debug.WriteLine(i);
}
prints();
VS2012解决了foreach与linq(Select)的闭包BUG。
勉強心を持てば、生活は虚しくない!
浙公网安备 33010602011771号