c#使用过程中使用了如下语句:
IEnumerable<APoint> scList = from c in PointCol select new APoint(c.Position, c);
...
foreach(APoint pt in scList)
{...
ReferenceEquals(pt,scList.First()); //->首次循环时返回false,正确值应为true;
...}
调试时发现:
原来scList中的迭代器是Linq产生的,其在每次循环运行时new 了一个APoint类型,难怪ReferenceEquals函数返回值不是预期的。
将from语句改为:
IEnumerable<APoint> scList = (from c in PointCol select new APoint(c.Position, c)).ToArray();
运行就正常了。