该代码初级讲座中包含不可变的结构里面一个简单的LINQ查询。
struct Point
{
static readonly List</*enum*/> NeighborIndexes;
//and other readonly fields!
public IEnumerable<FlatRhombPoint> GetEdges()
{
return from neighborIndex in NeighborIndexes;
select GetEdge(neighborIndex);
}
}
它不编译。
匿名方法,lambda表达式和内部结构查询表达式无法访问“这个”实例成员。 考虑复制“这个”匿名方法,lambda表达式或查询表达式之外的局部变量和使用本地代替。
是否有任何人知道为什么这是不允许的?
该修复程序的消息表明,正常工作:
public IEnumerable<FlatRhombPoint> GetEdges()
{
var thisCopy = this;
return from neighborIndex in NeighborIndexes;
select thisCopy.GetEdge(neighborIndex);
}
但是,这是标准的做法? 有没有理由不具有结构类似这样的疑问? (在事情进行复印更大的计划并不担心我的表现明智如此)。