参见英文答案 > C# Cannot use ref or out parameter inside an anonymous method body 3个
我在c#中的代码有问题,如果有人可以帮我解决我的问题.
然后我尝试从具有特定节点ID的所述结构中检索一些信息,并且我的代码失败了
“Cannot use ref or out parameter ‘c’ inside an anonymous method, lambda expression, or query expression”
这是我的代码:
public void XmlParser(ref Point a, ref Point b, ref Point c)
{
XDocument xdoc = XDocument.Load(XmlDirPath);
var coordinates = from r in xdoc.Descendants("move")
where int.Parse(r.Attribute("id").Value) == c.NodeID // !! here is the error !!
select new
{
X = r.Element("x").Value,
Y = r.Element("y").Value,
Z = r.Element("z").Value,
nID = r.Attribute("id").Value
};
foreach (var r in coordinates)
{
c.x = float.Parse(r.X1, CultureInfo.InvariantCulture);
c.y = float.Parse(r.Y1, CultureInfo.InvariantCulture);
c.z = float.Parse(r.Z1, CultureInfo.InvariantCulture);
c.NodeID = Convert.ToInt16(r.nID);
}
}
public struct Point
{
public float x;
public float y;
public float z;
public int NodeID;
}
解决方法:
好吧,你不允许在匿名方法或lambda中使用ref或out参数,正如编译器错误所说的那样.
相反,您必须将ref参数中的值复制到局部变量中并使用:
var nodeId = c.NodeID;
var coordinates = from r in xdoc.Descendants("move")
where int.Parse(r.Attribute("id").Value) == nodeId
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。