C# While循环语法解释

C# While循环语法解释,c#,while-loop,xsd,C#,While Loop,Xsd,在研究XSD验证时正在通读。我发现了这段代码 private static IEnumerable<ValidationEventArgs> RunValidation(string inputXml, bool includeHelperSchema) { var schemaSet = new XmlSchemaSet(); schemaSet.Add(schemaUnderTest); if (includeHelperSchema) {

在研究XSD验证时正在通读。我发现了这段代码

private static IEnumerable<ValidationEventArgs> RunValidation(string inputXml, bool includeHelperSchema)
{
    var schemaSet = new XmlSchemaSet();
    schemaSet.Add(schemaUnderTest);

    if (includeHelperSchema)
    {
        schemaSet.Add(helperSchema);
    }

    var readerSettings = new XmlReaderSettings()
    {
        Schemas = schemaSet,
        ValidationType = ValidationType.Schema,
        ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings,
    };

    var events = new List<ValidationEventArgs>();
    readerSettings.ValidationEventHandler += (s, e) => { events.Add(e); };

    using (var reader = XmlReader.Create(new StringReader(inputXml), readerSettings))
    {
        while (reader.Read())
            ;
    }

    return events;
}

删除会产生错误“
无效的表达式术语“}”;应为“

将主体放入while循环

    while(reader.Read()){ 
    // your code there
    }
分号只是使while循环不断计算
reader.Read()
,直到返回
false

写这篇文章的另一种方法是

var result = reader.Read()
while (result)
{
   result = reader.Read();
}
让我们看一下,其中
while
关键字定义:

while_statement
    : 'while' '(' boolean_expression ')' embedded_statement
    ;
如您所见,
while
语句必须以
结尾。因此,如果
embedded_语句
为空,您将得到:

while (boolean_expression)
    ;
而不是:

while (boolean_expression)
    embedded_statement
    ;
embedded_语句
可以是一行表达式,如
Console.WriteLine()
{}
大括号中的代码块:

while (boolean_expression)
{
    embedded_statement
}
;
这里,
不是必需的,您可以编写简单的:

while (boolean_expression)
{
    embedded_statement
}

请指出行。更新问题谢谢。我不知道必须以这种方式结束,因为我一直习惯于使用
while(boolean_expression){embedded_statement}
+1用于提供的链接。
while (boolean_expression)
{
    embedded_statement
}
;
while (boolean_expression)
{
    embedded_statement
}