正在阅读this在研究 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 (reader.Read())
;
删除会出现错误“无效的表达式术语 '}';预期
”。
最佳答案
让我们看看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
}
关于c# - while循环语法解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47862256/