Saltar al pie de página
.NET AYUDA

Coalescencia de nulos en C# (Cómo funciona para desarrolladores)

El operador de fusión nula ?? evalúa el operando del lado derecho y devuelve su resultado si el operando del lado izquierdo es una referencia nula; de lo contrario, devuelve el valor de su operando del lado izquierdo. Si el operando del lado izquierdo se evalúa como un tipo de valor no anulable, el operador de fusión nula (??) no evalúa su operando en el lado derecho. El operador de asignación ??= es una asignación de fusión nula que asigna el valor de su operando derecho a su operando izquierdo solo cuando el operando izquierdo se evalúa como un valor de tipo anulable. Si el operando en el lado izquierdo se evalúa como un valor no nulo, el operador de asignación de fusión nula (??=) no evalúa su operando del lado derecho. El operador de fusión nula es similar al operador ternario.

En C#, el operador de fusión nula (??) es un operador binario. Un operador que actúa sobre dos operandos se conoce como operador binario. Al utilizar el operador de fusión nula, se requieren dos operandos, y el operador evalúa cada operando para determinar el resultado. Ahora vamos a ver el uso de los operadores de fusión nula y condicional nula en C# a continuación.

Cómo utilizar los tipos de valores nulos coalescentes de C

  1. Cree un nuevo proyecto de C#.
  2. Asegúrese de que la versión adecuada esté instalada.
  3. Utilice el operador de fusión nula ??.
  4. Verifique los tipos de referencia de valor u objeto según el requisito.
  5. Ejecutar el código.

Coalescencia nula en C#

Los valores nulos en C# son manejados por defecto proporcionado por el operador de fusión nula (??), que es la idea de fusión que se utiliza para gestionar tales valores al tratar con tipos anulables o expresiones que podrían resultar en nulo.

Sintaxis

La siguiente es la sintaxis del operador de fusión nula:

result = expression1 ?? expression2;
result = expression1 ?? expression2;
result = If(expression1, expression2)
$vbLabelText   $csharpLabel
  • expression1: Esta expresión podría producir un valor nulo.
  • expression2: Si expression1 es nula, este es el valor por defecto o la expresión sustituta a utilizar.
  • result: La variable que contiene el resultado de la operación de fusión.

El operador de fusión nula ofrece un método condensado de asignar un valor por defecto al trabajar con tipos anulables, cuyo objetivo principal es simplificar el código y gestionar eficientemente datos nulos.

Beneficios

  • Concisión: Maneja comprobaciones de nulo sin requerir declaraciones condicionales complejas u operadores ternarios.
  • Legibilidad del código: Mejorada al declarar explícitamente que se proporcionará un valor por defecto si se devuelve nulo.

Es crucial asegurarse de que los tipos de expresión que se están comparando coincidan o sean compatibles antes de usar el operador de fusión nula.

Aunque útil, el uso excesivo del operador podría hacer que el código sea más difícil de comprender. Úselo con moderación cuando mejore la claridad del código.

Al trabajar con tipos anulables o escenarios que requieren valores por defecto, el operador de fusión nula (??) en C# es una herramienta efectiva para gestionar valores nulos y puede ayudar a escribir código más conciso y comprensible.

El operador de fusión nula ?? posee las siguientes cualidades relacionadas con el tipo:

Inferencia de tipos de resultados

El tipo de resultado del operador de fusión nula es el mismo que el de estos operandos si las expresiones 1 y 2 tienen el mismo tipo como se muestra en el siguiente código.

int? Value = null;
int result = Value ?? 10;
int? Value = null;
int result = Value ?? 10;
Dim Value? As Integer = Nothing
Dim result As Integer = If(Value, 10)
$vbLabelText   $csharpLabel

Compatibilidad de tipos

El tipo de resultado es el tipo al que ambas expresiones pueden ser convertidas implícitamente si las expresiones 1 y 2 tienen tipos distintos pero uno puede ser convertido implícitamente al otro.

double? value = null;
int result = (int)(value ?? 5.5);
double? value = null;
int result = (int)(value ?? 5.5);
Imports System

Dim value? As Double = Nothing
Dim result As Integer = CInt(Math.Truncate(If(value, 5.5)))
$vbLabelText   $csharpLabel

Promoción de tipos

Si los tipos de las expresiones 1 y 2 no pueden ser convertidos implícitamente, el tipo de resultado se elegirá según las reglas de promoción de tipos de C#.

int? value = null;
long result = value ?? 100L;
int? value = null;
long result = value ?? 100L;
Dim value? As Integer = Nothing
Dim result As Long = If(value, 100L)
$vbLabelText   $csharpLabel

En consecuencia, los tipos de los operandos involucrados y las reglas de conversión de tipos de C# dictan el tipo variable o expresión que contiene el resultado del operador de fusión nula (??). Para garantizar el manejo correcto de tipos y valores al emplear el operador de fusión nula, es crucial tener en cuenta la compatibilidad y las posibles conversiones de tipo.

Coalescencia en IronPDF

Instalar IronPDF

Para instalar la biblioteca IronPDF, ingrese el siguiente código en el Administrador de Paquetes:

Install-Package IronPdf

Fusión nula en C# (Cómo funciona para los desarrolladores): Figura 1 - Instalar IronPDF

Alternativamente, puede utilizar el Administrador de Paquetes NuGet para buscar el paquete "IronPDF". Puede elegir y descargar el paquete necesario de esta lista de todos los paquetes NuGet conectados a IronPDF.

Fusión nula en C# (Cómo funciona para los desarrolladores): Figura 2 - Administrador de Paquetes NuGet

Crear PDF con Null Coalescing

Una biblioteca C# llamada IronPDF se utiliza para crear y trabajar con documentos PDF. La biblioteca ofrece características para trabajar con PDFs, como formato, procesamiento de texto y gestión de imágenes. "Fusión nula" no es un método o característica exclusiva de IronPDF; más bien, es una característica del lenguaje más que una operación específica de la biblioteca.

Sin embargo, si está trabajando con IronPDF o cualquier otra biblioteca en su código C#, puede utilizar los operadores de fusión nula (??) que proporciona el lenguaje C#.

Para manejar situaciones de nulo o proporcionar valores por defecto, por ejemplo, al trabajar con objetos de IronPDF, tipos de valor anulables o propiedades que pueden devolver nulo, puede utilizar el operador de fusión nula.

El siguiente ejemplo muestra cómo el operador de fusión nula puede ser usado con IronPDF:

using IronPdf;
using IronPdf.Pages;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int? x = null;

            // Use the null-coalescing operator to provide a default value if x is null
            var outputstr = $@"square of <b>{x}</b> is <b>{Math.Sqrt(x ?? 30)}</b>";

            // Render the HTML string as a PDF using IronPDF
            var pdfcreate = ChromePdfRenderer.StaticRenderHtmlAsPdf(outputstr);

            // Save the generated PDF to the file system
            pdfcreate.SaveAs("demo.pdf");

            // Wait for a key press to prevent the console from closing immediately
            Console.ReadKey();
        }
    }
}
using IronPdf;
using IronPdf.Pages;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int? x = null;

            // Use the null-coalescing operator to provide a default value if x is null
            var outputstr = $@"square of <b>{x}</b> is <b>{Math.Sqrt(x ?? 30)}</b>";

            // Render the HTML string as a PDF using IronPDF
            var pdfcreate = ChromePdfRenderer.StaticRenderHtmlAsPdf(outputstr);

            // Save the generated PDF to the file system
            pdfcreate.SaveAs("demo.pdf");

            // Wait for a key press to prevent the console from closing immediately
            Console.ReadKey();
        }
    }
}
Imports IronPdf
Imports IronPdf.Pages

Namespace ConsoleApp1
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Dim x? As Integer = Nothing

			' Use the null-coalescing operator to provide a default value if x is null
			Dim outputstr = $"square of <b>{x}</b> is <b>{Math.Sqrt(If(x, 30))}</b>"

			' Render the HTML string as a PDF using IronPDF
			Dim pdfcreate = ChromePdfRenderer.StaticRenderHtmlAsPdf(outputstr)

			' Save the generated PDF to the file system
			pdfcreate.SaveAs("demo.pdf")

			' Wait for a key press to prevent the console from closing immediately
			Console.ReadKey()
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Recuerde que IronPDF (o cualquier biblioteca) no proporciona una característica o método especial para gestionar valores nulos con operadores condicionales; más bien, el uso del operador de fusión nula se basa en características y conceptos generales del lenguaje C# para manejar un operador condicional nulo. Para saber más sobre las características y capacidades de IronPDF, visite los Demos de IronPDF.

Salida:

Fusión nula en C# (Cómo funciona para los desarrolladores): Figura 3 - Salida del ejemplo anterior

Conclusión

En resumen, el operador de fusión nula (??) de C# es una característica útil que facilita y hace más eficiente el manejo de valores nulos en expresiones y asignaciones. Este operador simplifica el código al dar a los desarrolladores una forma clara de manejar escenarios en los que un valor podría ser nulo. Esto permite a los desarrolladores especificar valores por defecto o llevar a cabo lógica alternativa con facilidad. Su adaptabilidad hace que el código sea más simplificado y efectivo, simplificando las pruebas de nulo y mejorando la legibilidad.

IronPDF ofrece una licencia perpetua, opciones de actualización, un año de mantenimiento de software y una garantía de devolución de dinero de treinta días, todo incluido en el paquete Lite $799. Los usuarios tienen treinta días para evaluar el producto en entornos de aplicación en el mundo real durante el período de prueba con marca de agua. Haga clic en el Licenciamiento de IronPDF que se proporciona para aprender más sobre el costo, licenciamiento y versión de prueba de IronPDF. Para saber más sobre los productos de Iron Software, consulte el sitio web de Iron Software.

Preguntas Frecuentes

¿Cómo mejora el operador de coalición nula la legibilidad del código en C#?

El operador de coalición nula `??` en C# mejora la legibilidad del código al simplificar las verificaciones de nulos y proporcionar una forma concisa de asignar valores por defecto cuando se encuentra un tipo anulable.

¿Cuál es el propósito del operador de asignación de coalición nula en C#?

El operador de asignación de coalición nula `??=` asigna el valor de su operando derecho a su operando izquierdo solo si el operando izquierdo es nulo, permitiendo un código más sencillo al tratar con tipos anulables.

¿Puedes proporcionar un ejemplo de uso del operador de coalición nula en una aplicación PDF en C#?

En una aplicación PDF en C# usando IronPDF, podrías usar el operador de coalición nula para asignar un nombre de archivo por defecto si el usuario no lo especifica: string pdfName = userInputFileName ?? "default.pdf";.

¿Cuáles son algunas trampas comunes al usar el operador de coalición nula?

Una trampa común es no asegurar la compatibilidad de tipos entre operandos, lo que puede llevar a errores de conversión de tipos. Es crucial asegurar que ambos operandos sean de tipos compatibles al usar el operador de coalición nula.

¿Cómo se relaciona el operador de coalición nula con la compatibilidad de tipos en C#?

El operador de coalición nula requiere que ambos operandos sean de tipos compatibles. Si no lo son, C# aplica reglas de promoción de tipos para determinar el tipo de resultado, lo que puede llevar a un comportamiento inesperado si no se maneja cuidadosamente.

¿Por qué es beneficioso el operador de coalición nula para los desarrolladores que manejan tipos anulables?

El operador de coalición nula es beneficioso porque permite a los desarrolladores manejar de manera eficiente tipos anulables al proporcionar valores por defecto, reduciendo la necesidad de lógica condicional verbosa.

¿Cómo pueden los desarrolladores usar el operador de coalición nula para manejar valores nulos en bibliotecas de código C#?

Los desarrolladores pueden usar el operador de coalición nula en bibliotecas de código C# para asignar valores por defecto cuando un valor dado podría ser nulo, asegurando que la aplicación continúe funcionando sin excepciones de referencia nula.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología en Iron Software y un ingeniero visionario que lidera la tecnología PDF en C#. Como el desarrollador original detrás de la base de código central de Iron Software, ha moldeado la arquitectura de productos de la compañía desde ...

Leer más