我正准备参加关于c#70-483的微软考试,"还有很长的路要走", 并遵循复数视频的C#路径.在完成测试并检查我的错误答案后,我来到了这个.
2.考虑以下代码:
static void ListTowns(string[] countries)
{
foreach (string country in countries)
{
int townCount = GetTownCount(country);
int i = 0;
for (i = 0; i < townCount; i++)
{
Console.WriteLine(GetTownName(country, i));
}
}
}
Run Code Online (Sandbox Code Playgroud)
变量何时超出范围?回答:
退出ListTowns()方法.
退出时 foreach loop
我永远不会超出范围,因为方法是static.
退出时 for loop
正确答案是4,但我的答案是2.因为在for循环之后你仍然可以使用i.或者我对"超出范围"的定义不正确?
问题是IMO含糊不清且措辞严厉.有没有这样的概念,在C#中的变量"走出去的范围" -但有是一个变量的作用域和范围i变量是整个foreach循环体,包括空集的右括号之间的语句在for环路和闭幕括号foreach循环.C#5规范的相关部分是3.7:
在local-variable-declaration(第8.5.1节)中声明的局部变量的范围是声明发生的块.在这种情况下,块是
foreach循环的块.
你可以写的事实
Console.WriteLine(i);
Run Code Online (Sandbox Code Playgroud)
在for循环之后它仍然编译显示它仍然在范围内.循环的每次迭代都foreach使用不同的i变量,但foreach循环中的任何位置i都在范围内.(甚至在声明之前就是这样 - 你不能使用它,但它仍然在范围内.)
我已经给出了与你相同的答案,作为被问到的最佳近似值.我建议你给Pluralsight发电子邮件,要求他们改进这个问题.
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |