如何修复无法访问的代码检测警告
How to fix unreachable code dedected warning
dbLinq XMlMappingSource.cs 包含代码:
public void ReadEmptyContent(XmlReader r, string name)
{
if (r.IsEmptyElement)
r.ReadStartElement(name, DbmlNamespace);
else
{
r.ReadStartElement(name, DbmlNamespace);
for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
{
if (r.NamespaceURI != DbmlNamespace)
r.Skip();
throw UnexpectedItemError(r);
}
r.ReadEndElement();
}
}
这会导致编译警告
警告 CS0162 检测到无法访问的代码
第
行
for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
在 for 子句的第三部分 r.MoveToContent()
看起来是正常的节点遍历代码,到了for的第三部分
如何解决这个问题?
使用 .NET 4
你永远不会执行增量步骤,因为你的第一个 运行 通过循环总是抛出异常。
正如 Rawling 所说,无论如何您都会抛出异常。
尝试将循环更改为:
for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
{
if (r.NamespaceURI != DbmlNamespace)
r.Skip();
else
throw UnexpectedItemError(r);
}
这将解决您的问题。
dbLinq XMlMappingSource.cs 包含代码:
public void ReadEmptyContent(XmlReader r, string name)
{
if (r.IsEmptyElement)
r.ReadStartElement(name, DbmlNamespace);
else
{
r.ReadStartElement(name, DbmlNamespace);
for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
{
if (r.NamespaceURI != DbmlNamespace)
r.Skip();
throw UnexpectedItemError(r);
}
r.ReadEndElement();
}
}
这会导致编译警告
警告 CS0162 检测到无法访问的代码
第
行 for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
在 for 子句的第三部分 r.MoveToContent()
看起来是正常的节点遍历代码,到了for的第三部分
如何解决这个问题? 使用 .NET 4
你永远不会执行增量步骤,因为你的第一个 运行 通过循环总是抛出异常。
正如 Rawling 所说,无论如何您都会抛出异常。
尝试将循环更改为:
for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
{
if (r.NamespaceURI != DbmlNamespace)
r.Skip();
else
throw UnexpectedItemError(r);
}
这将解决您的问题。