Меня спросили, что не так / как можно исправить следующий сценарий
Customer customer = null;
customer.WhenNull(c => new Customer())
.Foo();
// instead of
Customer customer = null;
if (customer == null)
{
customer = new Customer();
}
customer.Foo();
Один разработчик отправляет мне свою версию расширения WhenNull
public static T WhenNull<T>(this T source, Action<T> nullAction)
{
if (source != null)
{
return source;
}
if (nullAction == null)
{
throw new ArgumentNullException("nullAction");
}
nullAction(source);
return source;
}
Его проблема / намерение состоит в том, что он не хочет указывать базовый объект в лямбда-выражении (в данном случае «клиент»)
Customer customer = null;
customer.WhenNull(c => customer = new Customer())
.Foo();
Я думал, что это невозможно сделать.
Это правильно?