Propiedades implementadas automáticamente
Declare propiedades con la sintaxis concisa de las propiedades automáticas.
Propiedades implementadas automáticamente es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 1 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.
¿Qué es una propiedad?
Una propiedad parece un campo desde el exterior, pero se implementa mediante métodos de acceso (get y set). Las propiedades permiten exponer datos y, al mismo tiempo, mantener el control sobre cómo se leen y escriben.
using System;
class Program
{
public string Name { get; set; }
static void Main()
{
var p = new Program();
p.Name = "Coddy";
Console.WriteLine(p.Name);
}
}Sintaxis autoimplementada
Una propiedad autoimplementada utiliza { get; set; }. El compilador genera un campo de respaldo oculto, por lo que no tiene que escribirlo manualmente.
using System;
class Person
{
public string FirstName { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
var person = new Person { FirstName = "Ada", Age = 36 };
Console.WriteLine(person.FirstName + " is " + person.Age);
}
}¿Por qué usar propiedades en lugar de campos?
Las propiedades públicas proporcionan una API estable. Más adelante puede añadir validación o cambiar el almacenamiento sin romper el código que las utiliza. Los campos públicos no permiten hacerlo.
using System;
class Account
{
public decimal Balance { get; set; }
}
class Program
{
static void Main()
{
var a = new Account();
a.Balance = 100.50m;
Console.WriteLine("Balance: " + a.Balance);
}
}Propiedades autoimplementadas de solo lectura
Omita set para convertir una propiedad en una propiedad de solo lectura. Solo puede asignarle un valor en el constructor o mediante un inicializador, lo que proporciona valores inmutables de forma predeterminada.
using System;
class Circle
{
public double Radius { get; }
public Circle(double radius)
{
Radius = radius;
}
}
class Program
{
static void Main()
{
var c = new Circle(5.0);
Console.WriteLine("Radius: " + c.Radius);
}
}Valores predeterminados de las propiedades
Puede asignar un valor inicial a una propiedad autoimplementada mediante = value;. Esto se ejecuta cuando se crea el objeto, antes de cualquier cuerpo de constructor.
using System;
class Settings
{
public bool DarkMode { get; set; } = true;
public int Volume { get; set; } = 50;
}
class Program
{
static void Main()
{
var s = new Settings();
Console.WriteLine("DarkMode: " + s.DarkMode + ", Volume: " + s.Volume);
}
}Setters privados
Un private set permite que la clase cambie el valor internamente, al tiempo que impide que el código externo lo modifique. Es un patrón de encapsulación habitual.
using System;
class Counter
{
public int Count { get; private set; }
public void Increment()
{
Count++;
}
}
class Program
{
static void Main()
{
var counter = new Counter();
counter.Increment();
counter.Increment();
Console.WriteLine("Count: " + counter.Count);
}
}Setters de solo inicialización
El accesor init (C# 9 o posterior) permite asignar un valor únicamente durante la inicialización del objeto. Después de construirlo, el valor queda bloqueado.
using System;
class Product
{
public string Name { get; init; }
public decimal Price { get; init; }
}
class Program
{
static void Main()
{
var p = new Product { Name = "Book", Price = 12.99m };
Console.WriteLine(p.Name + ": " + p.Price);
}
}Propiedades con distintos niveles de acceso
Las propiedades siguen los modificadores de acceso habituales. Puede combinar niveles: un getter público con un setter privado, o una propiedad completamente interna.
using System;
class User
{
public string Id { get; private set; }
public User(string id)
{
Id = id;
}
}
class Program
{
static void Main()
{
var u = new User("u-001");
Console.WriteLine("User Id: " + u.Id);
}
}Propiedades autoimplementadas con apariencia calculada
Las propiedades autoimplementadas almacenan datos; no realizan cálculos. Si necesita un valor calculado, debe utilizar una propiedad completa, que se tratará más adelante. Por ahora, considere las propiedades autoimplementadas como un almacenamiento sencillo.
using System;
class Rectangle
{
public double Width { get; set; }
public double Height { get; set; }
}
class Program
{
static void Main()
{
var r = new Rectangle { Width = 4, Height = 3 };
double area = r.Width * r.Height;
Console.WriteLine("Area: " + area);
}
}Actualizar propiedades autoimplementadas
Puede leer y reasignar una propiedad autoimplementada que tenga setter tantas veces como quiera, igual que una variable.
using System;
class Player
{
public int Score { get; set; }
}
class Program
{
static void Main()
{
var player = new Player();
player.Score = 10;
player.Score += 5;
player.Score *= 2;
Console.WriteLine("Score: " + player.Score);
}
}Integrarlo todo
Una clase de modelo típica consta principalmente de propiedades autoimplementadas: algunas modificables, otras de solo inicialización y otras con setters privados. Esto mantiene la clase concisa y clara.
using System;
class BankAccount
{
public string Owner { get; init; }
public decimal Balance { get; private set; }
public void Deposit(decimal amount)
{
Balance += amount;
}
}
class Program
{
static void Main()
{
var acct = new BankAccount { Owner = "Lin" };
acct.Deposit(250m);
Console.WriteLine(acct.Owner + ": " + acct.Balance);
}
}Comprobación rápida
Compruebe cuánto ha aprendido sobre las propiedades autoimplementadas.
Resumen
Ha aprendido que las propiedades autoimplementadas utilizan { get; set; } con un campo de respaldo generado por el compilador. Entre sus variantes se incluyen { get; } para propiedades de solo lectura, private set para controlar las modificaciones y init para valores que solo se establecen una vez. Son la forma predeterminada de exponer datos en una clase.
using System;
class Demo
{
public string A { get; set; } = "settable";
public string B { get; } = "read-only";
public string C { get; init; } = "init-only";
}
class Program
{
static void Main()
{
var d = new Demo { C = "changed-at-init" };
Console.WriteLine(d.A + ", " + d.B + ", " + d.C);
}
}Preguntas frecuentes
¿La lección «Propiedades implementadas automáticamente» es gratis?
Sí — el texto completo de «Propiedades implementadas automáticamente» 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 implementadas automáticamente»?
Declare propiedades con la sintaxis concisa de las propiedades automáticas. 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 1 de 4.
¿Cuánto tiempo toma la lección «Propiedades implementadas automáticamente»?
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
- Propiedades implementadas automáticamente
- Propiedades completas con campos de respaldo
- Miembros cuyo cuerpo es una expresión
- Indexadores