0Pricing
C# Academy · Lección

Propiedades HasValue y Value

Inspeccione y acceda de forma segura a valores anulables.

Propiedades HasValue y Value es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.

Dos propiedades clave

Todo tipo anulable expone HasValue (un bool) y Value (el valor subyacente). Estas son las herramientas para inspeccionarlo de forma segura.

using System;

class Program {
    static void Main() {
        int? n = 5;
        Console.WriteLine(n.HasValue);
        Console.WriteLine(n.Value);
    }
}

HasValue comprueba la presencia

HasValue es true cuando hay un valor real presente y false cuando el valor es nulo.

using System;

class Program {
    static void Main() {
        int? a = 10;
        int? b = null;
        Console.WriteLine(a.HasValue);
        Console.WriteLine(b.HasValue);
    }
}

Leer Value de forma segura

Compruebe siempre HasValue antes de leer Value, porque leer Value cuando el valor es nulo produce una excepción.

using System;

class Program {
    static void Main() {
        int? n = 42;
        if (n.HasValue) {
            Console.WriteLine(n.Value * 2);
        }
    }
}

Acceder a Value cuando es nulo produce una excepción

Si lee Value cuando el anulable es nulo, C# produce una InvalidOperationException. La comprobación le protege.

using System;

class Program {
    static void Main() {
        int? n = null;
        try {
            Console.WriteLine(n.Value);
        } catch (InvalidOperationException) {
            Console.WriteLine("Caught: no value");
        }
    }
}

GetValueOrDefault

GetValueOrDefault() devuelve el valor si está presente; de lo contrario, devuelve el valor predeterminado del tipo (0 para int, false para bool).

using System;

class Program {
    static void Main() {
        int? n = null;
        Console.WriteLine(n.GetValueOrDefault());
    }
}

GetValueOrDefault con valor alternativo

Pase un argumento para elegir su propio valor alternativo: GetValueOrDefault(99) devuelve 99 cuando el valor es nulo.

using System;

class Program {
    static void Main() {
        int? n = null;
        Console.WriteLine(n.GetValueOrDefault(99));
        int? m = 7;
        Console.WriteLine(m.GetValueOrDefault(99));
    }
}

Patrón: comprobar y usar

Un patrón habitual combina HasValue y Value en una bifurcación clara.

using System;

class Program {
    static void Describe(int? score) {
        if (score.HasValue)
            Console.WriteLine("Score is " + score.Value);
        else
            Console.WriteLine("No score yet");
    }
    static void Main() {
        Describe(88);
        Describe(null);
    }
}

Conversión implícita de vuelta

Puede asignar un anulable a un tipo normal solo después de confirmar que tiene un valor y leer después Value.

using System;

class Program {
    static void Main() {
        int? maybe = 15;
        if (maybe.HasValue) {
            int real = maybe.Value;
            Console.WriteLine(real + 5);
        }
    }
}

Valor predeterminado de un anulable

Un anulable que no se establece explícitamente tiene null como valor predeterminado, por lo que HasValue es falso.

using System;

class Program {
    static void Main() {
        int? n = default;
        Console.WriteLine(n.HasValue);
    }
}

Usar en agregaciones

Recorra los datos y omita los valores nulos con HasValue para calcular totales de forma segura.

using System;

class Program {
    static void Main() {
        int?[] readings = { 10, null, 5, null, 8 };
        int sum = 0;
        foreach (var r in readings)
            if (r.HasValue) sum += r.Value;
        Console.WriteLine(sum);
    }
}

GetValueOrDefault en bucles

GetValueOrDefault puede simplificar el código cuando el valor nulo debe tratarse como cero.

using System;

class Program {
    static void Main() {
        int?[] readings = { 10, null, 5 };
        int sum = 0;
        foreach (var r in readings)
            sum += r.GetValueOrDefault();
        Console.WriteLine(sum);
    }
}

Comprobación rápida

Compruebe sus conocimientos sobre las propiedades de los tipos anulables.

Resumen

HasValue indica si un anulable contiene un valor y Value lo recupera, pero leer Value cuando el valor es nulo produce una excepción.

GetValueOrDefault() devuelve de forma segura el valor o un valor alternativo (el valor predeterminado del tipo o uno que proporcione), por lo que resulta ideal para sumas y lecturas seguras.

Preguntas frecuentes

¿La lección «Propiedades HasValue y Value» es gratis?

Sí — el texto completo de «Propiedades HasValue y Value» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Propiedades HasValue y Value»?

Inspeccione y acceda de forma segura a valores anulables. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Propiedades HasValue y Value»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Introducción a los tipos de valor anulables
  2. Propiedades HasValue y Value
  3. Operadores de fusión de nulos
  4. Nullable en cálculos
← Volver a C# Academy