此代码在 C# 中具有明确定义的不工作行为:
class Foo
{
static List<int> to = new List<int>( from ); // from is still null
static IEnumerable<int> from = Something();
}
注意:我不是在问如何修复该代码,因为我已经知道如何做到这一点
这样做的理由是什么?C# 已经进行了运行时检查以检测对静态成员的首次访问。为什么不将此扩展到每个成员的事物并让它们按需运行,或者更好地让编译器在编译时找出顺序?
顺便说一句:我认为同样的问题(或几乎相同的问题)也适用于非静态成员。