我有一个C#while循环,在这个循环中继续发出与移动到循环中的下一个项目相同的行为吗?与"for循环"完全相同.
例如,请参阅以下代码示例中的任何问题?
while ((line = file.ReadLine()) != null)
{
string messageDownloadID = line ;
if (String.IsNullOrEmpty(messageDownloadID))
{
continue;
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我有一个C#while循环,在这个循环中继续发出与移动到循环中的下一个项目相同的行为吗?与"for循环"完全相同.
不,a continue没有移动到下一个项目的行为,除非移动到下一个项目的while块的一部分是循环条件的一部分或发生并在continue语句之前执行.A continue将移动到循环的下一次迭代.该continue声明总是从最近的封闭一个新的迭代while,do,for或foreach语句.但是,如果在while循环中,比如说,i++在continue语句之后发生它将不会被执行.它与for循环不完全相同.
语义continue如下:
while(condition) {
statement
continue
statement
}
Run Code Online (Sandbox Code Playgroud)
相当于
top:
while(condition) {
statement
goto top;
statement
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,continue如果执行,则永远不会执行后面的语句continue.但是,例如,这两个循环具有不同的语义:
for (int i = 0; i < 10; i++) {
if (i == 5) {
continue;
}
Console.WriteLine(i);
}
int j = 0;
while (j < 10) {
if (j == 5) {
continue;
}
Console.WriteLine(j);
j++;
Run Code Online (Sandbox Code Playgroud)
}
前者循环将打印0通过9在控制台上,而第二个将打印后进入死循环0,通过4在控制台上.
例如,请参阅以下代码示例中的任何问题?
while ((line = file.ReadLine()) != null) {
string messageDownloadID = line;
if (String.IsNullOrEmpty(messageDownloadID)) {
continue;
}
}
Run Code Online (Sandbox Code Playgroud)
这得看情况.首先,除了将文件指针移动到文件file末尾之外,这个循环没有做任何事情.现在,假设你的意思是在声明之后有if这样的陈述
while ((line = file.ReadLine()) != null) {
string messageDownloadID = line;
if (String.IsNullOrEmpty(messageDownloadID)) {
continue;
}
ProcessMessageDownloadID(messageDownloadID);
}
Run Code Online (Sandbox Code Playgroud)
那你的代码很好.这是因为while移动到下一个项目的部分是while条件的一部分(参见上面的粗体语句),因此将在循环的每次迭代中执行.您的代码是用于解析文件和跳过无法解析的项目的标准模式(因为它们是空白的).
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |