このコードには、C# で動作しないという明確に定義された動作があります。
class Foo
{
static List<int> to = new List<int>( from ); // from is still null
static IEnumerable<int> from = Something();
}
注:私はすでにその方法を知っているので、そのコードを修正する方法を尋ねていません
これの正当化は何ですか?C# では、静的メンバーへの最初のアクセスを検出するためのランタイム チェックが既に行われています。これをメンバーごとに拡張して、オンデマンドで実行したり、コンパイル時にコンパイラーに順序を理解させたりしないのはなぜですか?
ところで:同じ質問(またはほぼ同じ)が非静的メンバーにも当てはまると思います。