我的应用程序中包含以下代码:
protected async override void OnAppearing()
{
base.OnAppearing();
Subscribe();
cardSetPhrases = App.DB.GetPhrasesForCardSet(cardSetId);
var num = 1;
foreach (var x in cardSetPhrases) { x.Row = num++; };
await CreateListSectionAsync();
}
IDE在这里给我一条消息:
答案 0 :(得分:3)
isActive = true
关闭 foreach
循环,然后启动下一条语句(从编译器的角度来看)。并立即与您的}
单个;
被称为空语句,当编译器需要具有一条语句(内部循环或if / else等)但您在那里不需要任何实际操作时,该实用程序很有用。 / p>
来自docs:
空语句由一个分号组成。它什么也不做,可以在需要执行语句但不需要执行任何操作的地方使用。
这就是为什么您收到有关“空声明”而不是“多余分号”的警告的原因。因为您将空语句放在不需要和不使用的地方。
答案 1 :(得分:1)
如果您这样编写foreach语句,也许它变得更清楚了,为什么您最后不需要额外的分号:
foreach (var x in cardSetPhrases)
{
x.Row = num++;
} // <-- no semicolon, because the { } make a complete block of statements.
答案 2 :(得分:0)
在foreach循环后不需要分号,因此没有任何终止要求。 这就是为什么它是多余的。
答案 3 :(得分:0)
因为您不需要使用分号来结束foreach
循环(这不是它们的语法),所以它认为您只是使用;
和空位(因为foreach用}
(花括号)关闭。
foreach循环,即使它们可以单行编写,也通常以多行格式设置,例如:
foreach (var x in cardSetPhrases)
{
x.Row = num++;
}
如果您想进一步了解它们的功能,请查看以下内容:
答案 4 :(得分:0)
在封闭块支架后移出分号。
而且,如果您想在for
,foreach
,if
等语句中写一条语句,则可以删除方括号,如下所示:
foreach (var x in cardSetPhrases) x.Row = num++;