我有以下扩展方法来帮助我检查和实例化对象是否为空。前两个方法可以正常工作,但它们并不是非常有用。
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方法无法达到所需的效果,即在foo
为null时将其设置为List<string>
的实例,并在其他情况下将其设置为自身。
如果您知道如何调整Ensure方法以实现此目的,我将不胜感激。
谢谢,汤姆