While循环语法说明
在研究XSD验证时通过this进行了读取。遇到这段代码。While循环语法说明
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 (reader.Read())      ; 
删除给出错误“Invalid expression term '}' ; expected”。
回答:
我们来看看documentation,其中定义while关键字:
while_statement     : 'while' '(' boolean_expression ')' embedded_statement 
    ; 
正如你看到的,while语句必须以;结束。所以,如果embedded_statement是空的,你会得到:
while (boolean_expression)     ; 
代替:
while (boolean_expression)     embedded_statement 
    ; 
embedded_statement可以是一行语句,比如Console.WriteLine()或代码{ }括号块:
while (boolean_expression) { 
    embedded_statement 
} 
; 
在这里,;是没有必要的,你可以写简单:
while (boolean_expression) { 
    embedded_statement 
} 
回答:
把身体while循环
while(reader.Read()){     // your code there 
    } 
回答:
while (reader.Read()); 分号只是导致while循环不断地评估reader.Read(),直到它返回false
另一种方式来写,这可能是
var result = reader.Read() while (result) 
{ 
    result = reader.Read(); 
} 
以上是 While循环语法说明 的全部内容, 来源链接: utcz.com/qa/260868.html


