El modificador required
Obligue a los llamadores a establecer las propiedades esenciales.
El modificador required 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.
El modificador required
El modificador required obliga a los autores de las llamadas a establecer una propiedad o un campo al crear un objeto. Traslada los errores de «ha olvidado un valor» del tiempo de ejecución al tiempo de compilación.
using System;
class Person {
public required string Name { get; init; }
}
var p = new Person { Name = "Ada" };
Console.WriteLine(p.Name); // AdaOmitir un miembro required impide la compilación
Si quien realiza la llamada omite un miembro required, el compilador informa de un error antes de que el programa llegue a ejecutarse.
using System;
class Person {
public required string Name { get; init; }
}
// var bad = new Person { }; // compile error: Name is required
var good = new Person { Name = "Lin" };
Console.WriteLine(good.Name); // Linrequired con init
required combina de forma natural con init: el valor debe proporcionarse durante la construcción y no puede cambiar después.
using System;
class Config {
public required string Url { get; init; }
public int Timeout { get; init; } = 30;
}
var c = new Config { Url = "https://api" };
Console.WriteLine(c.Url + " " + c.Timeout); // https://api 30required con set
También puede marcar como required una propiedad modificable. Debe inicializarse, pero puede cambiar posteriormente.
using System;
class Box {
public required int Size { get; set; }
}
var b = new Box { Size = 5 };
b.Size = 10; // still mutable
Console.WriteLine(b.Size); // 10Campos required
Los campos también pueden ser required, no solo las propiedades.
using System;
class Token {
public required string Value;
}
var t = new Token { Value = "abc123" };
Console.WriteLine(t.Value); // abc123Constructores y required
Si un constructor establece un miembro required, quienes utilicen ese constructor ya no tendrán que establecerlo. Use [SetsRequiredMembers] para informárselo al compilador.
using System;
using System.Diagnostics.CodeAnalysis;
class Person {
public required string Name { get; init; }
[SetsRequiredMembers]
public Person(string name) => Name = name;
}
Console.WriteLine(new Person("Sam").Name); // SamCombinación de required y opcional
Solo son obligatorios los miembros que marque; los demás siguen siendo opcionales y conservan sus valores predeterminados.
using System;
class Account {
public required string Owner { get; init; }
public decimal Balance { get; init; } = 0m;
}
var a = new Account { Owner = "Kai" };
Console.WriteLine(a.Owner + " " + a.Balance); // Kai 0required en la herencia
Los miembros required se heredan. Una clase derivada puede añadir sus propios miembros required, y todos deben establecerse.
using System;
class Base { public required int Id { get; init; } }
class Item : Base { public required string Name { get; init; } }
var i = new Item { Id = 1, Name = "Pen" };
Console.WriteLine(i.Id + " " + i.Name); // 1 PenSustitución de constructores complejos
required + init suele sustituir a los constructores grandes: obtiene miembros obligatorios con la sintaxis legible de los inicializadores de objetos.
using System;
class Email {
public required string To { get; init; }
public required string Subject { get; init; }
public string Body { get; init; } = "";
}
var e = new Email { To = "a@b.com", Subject = "Hi" };
Console.WriteLine(e.To + " | " + e.Subject); // a@b.com | HiIntención autoexplicativa
Marcar miembros como required documenta qué valores son esenciales, lo que facilita utilizar correctamente el tipo.
using System;
class Registration {
public required string Username { get; init; }
public required string Password { get; init; }
public bool Newsletter { get; init; }
}
var r = new Registration { Username = "ada", Password = "x" };
Console.WriteLine(r.Username); // adaIntegración
Un tipo que combina miembros required, opcionales y validados.
using System;
class Server {
public required string Host { get; init; }
public int Port { get; init; } = 8080;
public string Address => Host + ":" + Port;
}
var s = new Server { Host = "localhost" };
Console.WriteLine(s.Address); // localhost:8080Comprobación rápida
Confirme qué garantiza el modificador required.
Resumen
Ha aprendido a utilizar el modificador required.
- Obliga a quienes realizan las llamadas a inicializar el miembro al crear el objeto; el compilador lo comprueba.
- Se combina con
initpara obtener miembros obligatorios e inmutables. [SetsRequiredMembers]permite que un constructor satisfaga el requisito.- Los miembros required se heredan.
Preguntas frecuentes
¿La lección «El modificador required» es gratis?
Sí — el texto completo de «El modificador required» 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 «El modificador required»?
Obligue a los llamadores a establecer las propiedades esenciales. 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 «El modificador required»?
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
- Setters de solo inicialización con init
- El modificador required
- Patrones de objetos inmutables
- Expresiones with en records