On m'a demandé ce qui est erroné/comment le scénario suivant peut être fixéExtension « WhenNull » pour vérifier null et init l'objet sous-jacent via lambda
Customer customer = null;
customer.WhenNull(c => new Customer())
.Foo();
// instead of
Customer customer = null;
if (customer == null)
{
customer = new Customer();
}
customer.Foo();
Un développeur me envoie sa version de la WhenNull l'extension
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;
}
Son problème/l'intention est qu'il ne veut pas spécifier l'objet sous-jacent dans l'expression lambda (dans ce cas, « client »)
Customer customer = null;
customer.WhenNull(c => customer = new Customer())
.Foo();
Je pensais que cela ne pouvait pas être fait.
Est-ce correct?
Je me suis un peu perdue - laquelle voulez-vous atteindre? Lequel a tort? – Grzenio