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

回到顶部