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
_list
new List<object>
null