在C#5中,foreach对变量的使用是否已更改?

在C#5中,foreach对变量的使用是否已更改?,第1张

在C#5中,foreach对变量的使用是否已更改

这是对C#语言的更改,而不是.NET框架。因此,它只影响在C#5.0下编译的代码,而不考虑该代码将在其上执行的.NET framework版本。

C#5.0

规范的第8.8.4节清楚地表明已进行了此更改。具体来说,C#5.0规范的第249页指出:

foreach (V v in x) embedded-statement

然后扩展为:

{    E e = ((C)(x)).GetEnumerator();    try {        while (e.MoveNext()) { V v = (V)(T)e.Current; embedded-statement        }    }    finally {        … // Dispose e    }}

然后:

v在while循环中的位置对于嵌入式语句中出现的任何匿名函数如何捕获它很重要。

C#4.0

与声明的C#4.0规范相比,对规范的这一更改是显而易见的(同样在8.8.4节中,但是这次是第247页):

foreach (V v in x) embedded-statement

然后扩展为:

{    E e = ((C)(x)).GetEnumerator();    try {        V v;        while (e.MoveNext()) { v = (V)(T)e.Current; embedded-statement        }    }    finally {        … // Dispose e    }}

请注意,该变量

v
是在循环外部而不是内部声明的,就像在C#5.0中那样。

注意

您可以在Visual
Studio的安装文件夹下的C#规范中找到

VC#Specifications1033
。VS2005,VS2008,VS2010和VS2012就是这种情况,使您可以访问C#1.2、2.0、3.0、4.0和5.0的规范。您还可以通过搜索在MSDN上找到规范
C#Specification



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4976334.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-13
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存