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
- Introducción a los tipos de valor anulables
- Propiedades HasValue y Value
- Operadores de fusión de nulos
- Nullable en cálculos