在研究XSD验证的同时阅读了this。偶然发现了这段代码。
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“。
发布于 2017-12-18 12:50:04
让我们看一下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
}发布于 2017-12-18 12:49:11
将body for while循环
while(reader.Read()){
// your code there
}发布于 2017-12-18 12:49:35
while (reader.Read());分号只会导致while循环不断计算reader.Read(),直到返回false
编写此代码的另一种方法可能是
var result = reader.Read()
while (result)
{
result = reader.Read();
}https://stackoverflow.com/questions/47862256
复制相似问题