【发布时间】:2017-03-02 10:34:38
【问题描述】:
我正在准备关于 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));
}
}
}
变量 i 何时超出范围? 答案:
在退出
ListTowns()方法时。退出
foreach loop我永远不会超出范围,因为方法是
static。退出
for loop
正确答案是 4,但我的答案是 2。 因为在 for 循环之后你仍然可以使用 i。 还是我对“超出范围”的定义不正确?
【问题讨论】:
-
问题在哪里?
-
循环后 i 变量再次初始化为零
-
变量何时超出范围?对不起:)
-
回答 2 - 在 foreach 之后,而不是在
-
看起来这是一个旨在吸引您而不是测试知识的问题。退出 for 循环后,
foreach循环将(可能)再次迭代,创建一个新的i变量。所以技术上在下一次foreach迭代之前退出for循环(因为它不再使用)时它超出了范围,因为你还没有真正退出foreach.