1

C# では、次のようなオブジェクトの初期化を行います。

var thing = new List<object>() {new object()};

割り当ての前に発生するため、次とほぼ同じです。

var _thing = new List<object>();
_thing.Add(new object());
var thing = _thing;

または、割り当ての後に発生するため、次とほぼ同じです。

var thing = new List<object>();
thing.Add(new object());

次のようなファクトリで再帰的な結び目を作ろうとしている場合、これは違いを生むでしょう。

static class AbstractFactory {
    private static readonly IEnumerable<object> _list = new List<object>() {GetIEnumerable()};

    public static IEnumerable<object> GetIEnumerable() {
        return _list;
    }
}

メソッドが のイニシャライザで呼び出されたときに_listが返されるのはいつですか? 、、または未定義ですか?GetIEnumerable_listnew List<object>null

4

1 に答える 1