¿Hay alguna diferencia interna entre el C# sintáctica forma de azúcar de la toma de propiedades:¿Está bien utilizar una variable pública en C# si es de solo lectura?
public string FirstName { get; set; }
y sólo hacer las variables públicas como esto:
public string LastName;
Asumo se prefiere la primera forma y la segunda a ser evitado Sin embargo, a menudo veo este tipo de propiedad de sólo lectura que se utiliza, que es una forma del segundo tipo anterior:
public readonly string InternalCode;
Es de esta manera una mejor práctica para crear la propiedad de sólo lectura?
using System;
namespace TestProps
{
class Program
{
static void Main(string[] args)
{
Customer customer = new Customer();
customer.FirstName = "Jim";
customer.LastName = "Smith";
customer.Show();
}
}
class Customer
{
public string FirstName { get; set; } //prefered
public string LastName; //avoid
public readonly string InternalCode; //???
public Customer()
{
InternalCode = "234729834723984";
}
public void Show()
{
Console.WriteLine("{0}, {1} ({2})", LastName, FirstName, InternalCode);
Console.ReadLine();
}
}
}
ese artículo consistía en dos páginas que abordaban directamente mi pregunta, ¡gracias! Entiendo por eso que Jon ni siquiera aprobaría el "público readwly bool IsValid"; a menos que, como lo menciona al final, esté en una clase anidada –
Para aquellos de nosotros que solo buscan una respuesta y no un artículo extenso, ¿podrían agregar una alerta de spoiler aquí y darnos la respuesta sí o no? – DOK
El artículo de Skeet en realidad hace un par de excepciones, una de las cuales podría aplicarse a esta pregunta. Según el artículo, "haré una pequeña excepción para campos estáticos de solo lectura como string.Empty". Esta pregunta pudo haber sido modificada y al mover la asignación desde el constructor a la misma línea se leería públicamente static string InternalCode = "234729834723984"; Como tal, sería un "campo de solo lectura estático" como describió Skeet. – John