首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >While-loop语法解释

While-loop语法解释
EN

Stack Overflow用户
提问于 2017-12-18 12:45:17
回答 3查看 112关注 0票数 2

在研究XSD验证的同时阅读了this。偶然发现了这段代码。

代码语言:javascript
复制
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;
}

有人能给我解释一下分号放在这里的目的是什么吗?

代码语言:javascript
复制
while (reader.Read())
        ;

删除时会出现错误"Invalid expression term '}' ; expected“。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-18 12:50:04

让我们看一下documentation,其中定义了while关键字:

代码语言:javascript
复制
while_statement
    : 'while' '(' boolean_expression ')' embedded_statement
    ;

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

代码语言:javascript
复制
while (boolean_expression)
    ;

而不是:

代码语言:javascript
复制
while (boolean_expression)
    embedded_statement
    ;

embedded_statement可以是像Console.WriteLine()一样的一行表达式,也可以是{ }大括号中的一段代码:

代码语言:javascript
复制
while (boolean_expression)
{
    embedded_statement
}
;

在这里,;不是必需的,你可以简单地写:

代码语言:javascript
复制
while (boolean_expression)
{
    embedded_statement
}
票数 4
EN

Stack Overflow用户

发布于 2017-12-18 12:49:11

将body for while循环

代码语言:javascript
复制
    while(reader.Read()){ 
    // your code there
    }
票数 0
EN

Stack Overflow用户

发布于 2017-12-18 12:49:35

代码语言:javascript
复制
while (reader.Read());

分号只会导致while循环不断计算reader.Read(),直到返回false

编写此代码的另一种方法可能是

代码语言:javascript
复制
var result = reader.Read()
while (result)
{
   result = reader.Read();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47862256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档