Null coalescing assigment "??=", el nuevo operador de asignación en C# 8 - Code Variables -->
Code Variables Code Variables

Latest news

جاري التحميل ...

Null coalescing assigment "??=", el nuevo operador de asignación en C# 8

.NET CoreEn esta ocasión vamos a ver una pequeña novedad de C# 8 destinada a mejorar la codificación de un escenario muy frecuente: asignar un valor a una variable si ésta es nula.
Recordad que C#8 está aún en preview, y para usarlo hay que seguir los pasos que vimos en un post anterior.
En otras palabras, esta mejora pretende simplificar implementaciones como las siguientes, donde comprobamos si una variable contiene null y, en caso afirmativo, le asignamos un valor:
...
var defaultValue = ... // lo que sea;
var x = GetSomething();

// Usando un bloque if:
if(x == null)
{
x = defaultValue;
}

// O bien, usando el null coalescing operator:
x = x ?? defaultValue;

La solución propuesta en C# 8 ha sido la introducción del operador null coalescing assignment ??=, de forma que cualquiera de los bloques anteriores podría escribirse de la siguiente forma:
x ??= defaultValue;
Para verlo en acción sobre un ejemplo práctico, implementaremos la clásica propiedad con backing field que solemos usar para inicializar propiedades de tipo colección de forma lazy, es decir, sólo cuando vamos a utilizarlas. En versiones de C# anteriores a la 8, sería algo así:
public class Invoice
{
private ICollection<InvoiceLine> _lines;

public ICollection<InvoiceLine> Lines
{
get => _lines ?? (_lines = new HashSet<InvoiceLine>());
set => _lines = value;
}
}
Y ahora, quedará algo más compacto:
    public class Invoice
{
private ICollection<InvoiceLine> _lines;

public ICollection<InvoiceLine> Lines
{
get => _lines ??= new HashSet<InvoiceLine>(); // <- Here!
set => _lines = value;
}
}
En fin, sin ser algo revolucionario, sí es uno de esos pequeños detalles que continúan haciendo de C# un lenguaje cada vez más completo... ;)

Publicado en Variable not found.

Comments



If you like the content of our blog, we hope to stay in constant communication, just enter your email to subscribe to the blog's express mail to receive new blog updates, and you can send a message by clicking on the button next ...

إتصل بنا

About the site

author Code Variables  Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

Learn more ←

Blog visitors

Blog stats

All Copyrights Reserved

Code Variables

2019