IRONSOFTWAREHOME
ACTUALIZACIONES PARA DESARROLLADORES

Tipos Nullables de C# (Cómo Funciona para Desarrolladores)

Jacob Mellor, Director de Tecnología @ Team Iron
Jacob Mellor
Updated: 23 de abril de 2026

Al trabajar con C#, a menudo necesitas manejar valores nulos, especialmente con tipos de referencia. Los tipos anulables en C# proporcionan una forma de representar valores indefinidos o ausentes para tipos de valor. Esta guía cubre lo esencial de los tipos anulables en C#, sus usos prácticos y cómo funcionan en diferentes escenarios. También exploraremos IronPDF más adelante en el artículo.

Nullable Types in C#

Por defecto, los tipos de valor en C# (por ejemplo, int, bool, DateTime) no pueden asignarse valores nulos. Para abordar esta limitación, C# introduce tipos de valor anulables, lo que te permite asignar nulo a tipos de valor. Los tipos anulables son particularmente útiles cuando necesitas representar la ausencia de un valor válido.

Declaración de tipos nulos

Para declarar un tipo anulable en C#, utiliza la siguiente sintaxis:

// Declare a nullable integer
int? nullableInt = null;

Aquí, int? es una abreviatura de Nullable<int>. La variable nullableInt puede contener un valor int o null.

Comprobación de nulos

Para verificar si una variable de tipo nullable tiene un valor o no, puede usar la propiedad HasValue o comparar la variable directamente con null, como se muestra a continuación:

if (nullableInt.HasValue)
{
    // If nullableInt has a value, print it
    Console.WriteLine("Value: " + nullableInt.Value);
}
else
{
    // If nullableInt does not have a value, print a message
    Console.WriteLine("No value assigned.");
}

Alternativamente, puedes usar el operador de fusión nula (??) para proporcionar un valor por defecto cuando el tipo anulable es nulo:

// Assign 0 if nullableInt is null
int result = nullableInt ?? 0;
Console.WriteLine("Result: " + result);

Si nullableInt es null, a result se le asignará el valor predeterminado de 0.

Tipos de valor anulables frente a tipos de referencia anulables

En C#, los tipos de valor (como int, bool y double) difieren de los tipos de referencia (como string, object). Los tipos de valor anulables permiten que los tipos de valor representen nulo, mientras que los tipos de referencia anulables permiten que los tipos de referencia sean no anulables por defecto, reduciendo así el riesgo de excepciones de referencia nula.

Tipos de valores anulables

Un tipo de valor anulable permite que un tipo de valor tome un valor nulo. Para declarar un tipo de valor nullable, agregue un signo de interrogación ? al tipo de dato:

// Declare a nullable double
double? nullableDouble = null;

En este ejemplo, nullableDouble puede contener un valor double o null.

Tipos de referencia anulables

Los tipos de referencia nullable se introdujeron en C# 8.0. Puede habilitar los tipos de referencia nullable a nivel de proyecto o agregando la directiva #nullable enable al inicio de su archivo de código. Con los tipos de referencia nullable habilitados, los tipos de referencia deben marcarse explícitamente como nullable usando ?, ayudando a evitar posibles excepciones en tiempo de ejecución causadas por referencias nulas.

#nullable enable
// Declare a nullable string
string? nullableString = null;

Aquí, nullableString se permite que sea null. Si declara un tipo de referencia no nullable sin el ?, el compilador producirá advertencias si detecta asignaciones potencialmente nulas.

Habilitación de tipos de referencia anulables

Para habilitar los tipos de referencia nullable globalmente en un proyecto, agregue la siguiente línea a su archivo .csproj:

<Nullable>enable</Nullable>
XML

Una vez habilitado, el compilador tratará los tipos de referencia como no anulables por defecto. Esta característica es especialmente útil para detectar problemas de referencia nula en tiempo de compilación en lugar de en tiempo de ejecución.

Ejemplos prácticos

Exploremos algunos ejemplos prácticos para solidificar tu comprensión de los tipos anulables.

Ejemplo 1: Tipo nulo con tipos de valor

En este ejemplo, usaremos un tipo anulable con int:

class Program
{
    static void Main(string[] args)
    {
        int? nullableInt = null;
        // Use null coalescing operator to assign a default value
        int b = nullableInt ?? 10;
        Console.WriteLine("b: " + b);
        if (nullableInt.HasValue)
        {
            // nullableInt has a value
            Console.WriteLine("nullableInt has value: " + nullableInt.Value);
        }
        else
        {
            // nullableInt is null
            Console.WriteLine("nullableInt is null");
        }
    }
}

Aquí, nullableInt es una variable de tipo nullable de int. Si nullableInt es null, b obtiene el valor 10 gracias al operador de fusión nula. De lo contrario, b toma el valor de nullableInt.

Ejemplo 2: Tipos de referencia anulables

Ahora, veamos cómo funcionan los tipos de referencia anulables:

#nullable enable
class Program
{
    static void Main()
    {
        string? nullableString = null;
        string nonNullableString = "Hello";
        // Use null coalescing operator to provide a default value for length
        Console.WriteLine(nullableString?.Length ?? 0);
        Console.WriteLine(nonNullableString.Length);
    }
}

En el código anterior, nullableString puede ser null, y el operador de fusión nula asegura que si es null, la longitud de la cadena sea por defecto 0.

Ejemplo 3: Tipos nulos anidados

C# te permite declarar tipos anulables anidados. Por ejemplo:

// Redundant, but syntactically valid
int? nestedNullableInt = null;

Aunque los tipos anulables anidados pueden parecer redundantes, son sintácticamente válidos en C#. Sin embargo, en la práctica, los tipos anulables anidados no proporcionan funcionalidad adicional y rara vez se usan.

Operador de coalescencia nula (??)

El operador de fusión nula (??) se utiliza frecuentemente con tipos anulables para proporcionar un valor por defecto cuando el tipo anulable es nulo. Este operador simplifica el código al evitar comprobaciones if-else explícitas.

int? nullableValue = null;
// Assign -1 if nullableValue is null
int defaultValue = nullableValue ?? -1;

En este ejemplo, si nullableValue es null, a defaultValue se le asignará -1. De lo contrario, defaultValue tomará el valor de nullableValue.

Errores en tiempo de compilación y tipos anulables

Con los tipos de referencia anulables habilitados, C# produce advertencias y errores durante la compilación cuando detecta posibles problemas con asignaciones nulas. Estos errores en tiempo de compilación ayudan a detectar problemas de manera anticipada, haciendo tu código más robusto.

Considera el siguiente ejemplo:

string? nullableString = null;
// This will produce a compiler warning because nullableString may be null
string nonNullableString = nullableString;

En este caso, asignar nullableString a nonNullableString produce una advertencia del compilador porque nullableString puede ser null, y asignarla a un tipo no nullable podría llevar a excepciones en tiempo de ejecución.

Uso de tipos anulables con IronPDF

Tipos Nullable en C# (Cómo funciona para desarrolladores): Figura 1 - IronPDF: Biblioteca de PDF en C#

IronPDF es una biblioteca PDF de C# diseñada para ayudar a los desarrolladores a crear, editar y manipular archivos PDF directamente desde aplicaciones .NET. Puedes convertir HTML a PDF, generar informes, o incluso manejar estructuras de documentos complejas.

Los tipos anulables son especialmente útiles en escenarios de generación de informes dinámicos, como cuando estás generando un PDF para un contable con datos financieros incompletos. Al usar tipos anulables, puedes manejar campos opcionales, evitar excepciones y proporcionar valores por defecto.

using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        int? optionalIncome = null;  // Nullable type for optional income
        string? clientName = "Iron Dev";  // Nullable reference type for client name
        var renderer = new ChromePdfRenderer();
        string htmlContent = $@"
            <h1>Financial Report</h1>
            <p>Client Name: {clientName ?? "Unknown"}</p>
            <p>Income: {optionalIncome?.ToString() ?? "Data not available"}</p>";
        // Render the HTML to a PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF to disk
        pdf.SaveAs("FinancialReport.pdf");
        Console.WriteLine("PDF Generated Successfully.");
    }
}

Tipos Nullable en C# (Cómo funciona para desarrolladores): Figura 2 - Salida de ejemplo del código

En este código, se utilizan tipos nullable (int? y string?) para manejar datos faltantes de manera segura. El operador de fusión nula (??) asegura que si falta algún dato, se use un valor por defecto en el PDF.

Conclusión

Los tipos anulables en C# son una herramienta poderosa para manejar valores nulos tanto en tipos de valor como en tipos de referencia. Al usar tipos anulables, puedes evitar excepciones de referencia nula y mejorar la robustez de tu código. Recuerda habilitar los tipos de referencia anulables en nuevos proyectos para beneficiarte de la revisión de errores en tiempo de compilación, y utiliza el operador de fusión nula (??) para simplificar tu código al tratar con tipos anulables.

IronPDF ofrece una prueba gratuita para ayudarte a explorar sus características antes de comprometerte. Sin costo inicial, puedes probar y ver cómo se adapta a tu proceso de desarrollo. Una vez que esté listo para avanzar, las licencias comienzan desde $999.

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

Jacob Mellor es Director de Tecnología de Iron Software y un ingeniero visionario pionero en la tecnología C# PDF. Como desarrollador original de la base de código principal de Iron Software, ha dado forma a la arquitectura de productos de la empresa desde su creación, transformándola, junto con el director ejecutivo Cameron Rimington, en una empresa de más de 50 personas que presta servicios a la NASA, Tesla y organismos gubernamentales de todo el mundo.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

OR
bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta
Biblioteca C# NuGet para PDF
Instalar con NuGet

Versión: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. En el Explorador de Soluciones, haga clic derecho en Referencias, Administrar Paquetes NuGet
  2. Seleccione Examinar y busque "IronPDF"
  3. Seleccione el paquete e instale
C# PDF DLL
Descargar DLL

Versión: 2026.9

o descargue el Instalador de Windows aquí.

  1. Descargue y descomprima IronPDF en una ubicación como ~/Libs dentro del directorio de su solución
  2. En el Explorador de Soluciones de Visual Studio, haga clic derecho en Referencias. Seleccione Examinar, "IronPDF.dll"

Licencias desde $999