相关疑难解决方法(0)

C#中循环中的捕获变量

我遇到了一个关于C#的有趣问题.我有如下代码.

List<Func<int>> actions = new List<Func<int>>();

int variable = 0;
while (variable < 5)
{
    actions.Add(() => variable * 2);
    ++ variable;
}

foreach (var act in actions)
{
    Console.WriteLine(act.Invoke());
}
Run Code Online (Sandbox Code Playgroud)

我希望它输出0,2,4,6,8.但是,它实际输出5个10.

似乎是由于所有操作都涉及一个捕获的变量.结果,当它们被调用时,它们都具有相同的输出.

有没有办法解决这个限制,让每个动作实例都有自己的捕获变量?

c# closures captured-variable

202
推荐指数
7
解决办法
5万
查看次数

如何在C#中将DataTable转换为字符串?

我正在使用Visual Studio 2005,并且有一个DataTable,其中包含两列和一些我要输出到控制台的行.我希望有类似的东西:

DataTable results = MyMethod.GetResults();
Console.WriteLine (results.ToString());
Run Code Online (Sandbox Code Playgroud)

将简单的DataTable转换为字符串的最佳方法是什么(即我编码的最少量)?

c# datatable

26
推荐指数
5
解决办法
9万
查看次数

标签 统计

c# ×2

captured-variable ×1

closures ×1

datatable ×1