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