オブジェクトがnullかどうかをチェックしてインスタンス化するのに役立つ次の拡張メソッドがあります。上の 2 つは問題なく動作しますが、あまり役に立ちません。
public static bool IsNull<T>(this T t)
{
return ReferenceEquals(t, null);
}
public static T NewIfNull<T>(this T t, Func<T> createNew)
{
if (t.IsNull<T>())
{
return createNew();
}
return t;
}
public static void Ensure<T>(this T t, Func<T> createNew)
{
t = t.NewIfNull<T>(createNew);
}
最終的に私は次のようなことをしたいと思います
IList<string> foo;
...
foo.Ensure<IList<string>>(() => new List<string>());
ただし、Ensure メソッドは目的の効果を達成しません。つまり、 nullfoo
の場合は のインスタンスに設定し、それ以外のList<string>
場合は基本的にそれ自体に設定します。
これを達成するためにEnsureメソッドを微調整できることがわかっている場合は、助けていただければ幸いです。
ありがとう、トム