我最近在 C# 中遇到了一些相当莫名其妙的事情。在我们的代码库中,我们有一个TreeNode
类。在更改某些代码时,我发现无法将变量分配给Nodes
属性。经过仔细检查,很明显该属性是只读的,并且这种行为是可以预料的。
奇怪的是,我们的代码库在此之前一直依赖于为Nodes
属性分配一些匿名类型,并且编译和工作得很好。
总结一下:为什么这项任务AddSomeNodes
首先会起作用?
using System.Collections.Generic;
namespace ReadOnlyProperty
{
public class TreeNode
{
private readonly IList<TreeNode> _nodes = new List<TreeNode>();
public IList<TreeNode> Nodes
{
get { return _nodes; }
}
}
public class TreeBuilder
{
public IEnumerable<TreeNode> AddSomeNodes()
{
yield return new TreeNode
{
Nodes = { new TreeNode() }
};
}
public IEnumerable<TreeNode> AddSomeOtherNodes()
{
var someNodes = new List<TreeNode>();
yield return new TreeNode
{
Nodes = someNodes
};
}
}
}