Personalmente creo que sólo la segunda expansión tiene sentido (en términos de mantener a lo largo de la misma línea que +=
etc):
list = list ?? new List<int>();
pero para ser honesto me parece un poco innecesario. La gente generalmente "obtiene" i += 5;
, pero tiende a tener un problema con nulo-coalescente (??
). Agregue un operador de asignación nulo-coalescente y ... bueno, no veo que termine bien.
Personalmente estoy a favor del código original:
if(list == null) { list = new List<int>(); }
....
también - tener en cuenta: en todos los demás +=
, -=
etc - el lado derecho es siempre evaluados. En este caso, no sería (en algunos casos). Eso agrega aún más confusión. Con lo que quiero decir:
i += SomethingCriticalThatMustBeCalled(); // fine - always runs
j ??= SomethingElseCriticalThatMustBeCalled(); // is this run? if j != null?
Eso sería genial! No estoy seguro de si lo admite ... ¡pero sí, me gusta! – Zoidberg
Esta sugerencia de idea hace que mis partes de Ruby vibren. (Ver el operador Ruby '|| ='.) –