我对 C# 中 for 循环的循环表达式有一个很好的问题。
我总是喜欢学习和扩展我的知识,所以我经常使用我的反射器来观察和学习其他人。最近我在一个我认为是 C# 程序集的程序集中环顾四周。
我遇到了这个:
public virtual void DoRows(Parse rows)
{
for (; rows != null; {
Parse more;
rows = more;
}
)
{
more = rows.More;
this.DoRow(rows);
}
}
我从来不知道我可以在循环表达式中使用代码块。所以我启动了 MSDN 并查看了 C# 的语言参考,但一无所获。
C++ 参考资料显示了一些有趣的东西(http://msdn.microsoft.com/en-us/library/b80153d8.aspx),但我不是 C++ 开发人员,我强烈感觉该组件不是用 C++ 编写的.
dotPeek 说该程序集是 v4.0.30319 / msil 程序集。
现在问题如下: - 这是 C++ 还是 C# 代码结构?!- 我们可以在 C# 中做这样的事情吗?
我无法重现看起来像这样并在 VS2010 中编译的代码。
@edit:更改了代码结构中的组装一词。
@edit II:感谢您的所有回答。我认为这要么是 dotPeek 反射器中的错误,要么是我们发现了一些 for-loop-expression 复活节彩蛋。这就是 Red Gate 所说的相同方法:
public virtual void DoRows(Parse rows)
{
while (rows != null)
{
Parse more = rows.More;
this.DoRow(rows);
rows = more;
}
}