C# 8.0 ha introducido un nuevo operador que se conoce como operador de asignación de fusión nula ( ??= ). Este operador se utiliza para asignar el valor de su operando de la derecha a su operando de la izquierda, solo si el valor del operando de la izquierda es nulo. Si el operando de la izquierda se evalúa como no nulo, entonces este operador no evalúa su operando de la derecha.
Sintaxis:
p ??= q
Aquí, p es el operando izquierdo y q es el operando derecho del operador ??=. Si el valor de p es nulo, entonces el operador ??= asigna el valor de q en p. O si el valor de p no es nulo, entonces no evalúa q.
Puntos importantes:
- El operando de la izquierda del operador ??= debe ser una variable, una propiedad o un elemento indexador.
- Es asociativo por la derecha.
- No puede sobrecargar el operador ??=.
- Puede usar el operador ??= con tipos de referencia y tipos de valor.
Ejemplo:
// C# program to illustrate how to use
// ??= operator with value types and
// reference types
using
System;
namespace
example {
class
GFG {
static
void
Main(
string
[] args)
{
// Reference types
string
item_1 =
null
;
string
item_2 =
null
;
string
item_4 =
"GeeksforGeeks"
;
string
item_5 =
"GFG"
;
// Using ??= operator
item_1 = item_1 ??= item_4;
string
item_6 = item_2 ??= item_5;
Console.WriteLine(
"Value of item_1 is: {0}\n"
+
"Value of item_6 is:{1}"
, item_1, item_6);
// Value types
int
? ele_1 =
null
;
GFG obj =
new
GFG();
// Using ??= operator assigns
// the value of ele_1
// And also you are allowed to
// use method with ??= operator
ele_1 = ele_1 ??= obj.Add(10, 30);
Console.WriteLine(
"Value of ele_1 is {0}"
, ele_1);
}
// Method
public
int
Add(
int
a,
int
b)
{
int
result = a + b;
return
result;
}
}
}
Producción:
Value of item_1 is: GeeksforGeeks Value of item_6 is:GFG Value of ele_1 is 40
- Con la ayuda del operador ??= puede eliminar muchas condiciones «if-else» redundantes y hacer que su código sea más compacto y legible. Como se muestra en el siguiente ejemplo:
Ejemplo:
// C# program to illustrate how to use
// ??= operator to remove if statements
using
System;
namespace
example {
class
GFG {
// Main Method
static
void
Main(
string
[] args)
{
// Nullable variable
int
? element =
null
;
// Checking the element is null or not
if
(element
is
null
) {
// Assign a new value to the element
// Using ??= operator
int
? new_element = element ??= 400;
Console.WriteLine(
"Element is null. "
+
"So the new element is: {0}"
, new_element);
}
}
}
}
Producción:
Element is null. So the new element is: 400
// C# program to illustrate how to use
// ??= operator to remove if statements
using
System;
namespace
example {
class
Program {
static
void
Main(
string
[] args)
{
// Nullable variable
int
? element =
null
;
// Using ??= operator
// Assign values to the null variable
element ??= 400;
Console.WriteLine(
"Element is: {0}"
, element);
}
}
}
Producción:
Element is: 400
- También puede usar el operador ??= como una string anidada. Hace que su código sea más legible.
Ejemplo:
// C# program to illustrate
// how to nest ??= operator
using
System;
namespace
example {
class
GFG {
// Main Method
static
void
Main(
string
[] args)
{
// Nullable variables
int
? ele1 =
null
;
int
? ele2 =
null
;
int
? ele3 = 45;
// Using Nested ??= operator
int
? result = ele1 ??= ele2 ??= ele3;
Console.WriteLine(
"Element is: {0}"
, result);
}
}
}
Producción:
Element is: 45
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA