捕获for循环的迭代变量时,C#将该变量视为在循环外声明.这意味着在每次迭代中捕获相同的变量.以下程序写入333而不是写入012:
Action[] actions = new Action[3];
for (int i = 0; i < 3; i++)
actions [i] = () => Console.Write (i);
foreach (Action a in actions) a(); // 333
Run Code Online (Sandbox Code Playgroud)
我在Nutshell(第5版)中阅读C#,今天我遇到了这个,但我无法理解它,我不知道输出是什么333
而不是012
.是因为i
打印的值是循环后的值吗?怎么可能?i
应该在循环后处理,不是吗?
我有一个ProgressBar
像以下两个控件:
第一个画得很好.正如你所看到的,第二个只有一个0,它应该有两个,但另一个不能看到因为ProgressBar ForeColor
与它相同TextColor
.当ProgressBar
下面用Lime绘制时,我可以用黑色绘制文本,并在背景为黑色时在Lime中绘制文本吗?
我遇到了一个问题,并且关于同一问题的旧答案不够新,所以我认为可以再次询问。我的问题是:如何将一个表单停靠在另一个表单中?使用Panel 和Form 会更合适吗?第一种选择可能吗?提前致谢。