Que lindo
PD: Que vuelvan los viejos emojis, porque pusieron zapallos?
- Cierto, yo empecé a creer que había dormido tanto tiempo que ya estábamos en Halloween XD. Tampoco entiendo porque le llaman calabaza a los zapallos XD, en mi país las calabazas son muy diferentes.
- Con respecto a la pregunta, pues diferenciar campo, atributo y propiedad, según tengo entendido en C# los atributos son un mecanismo extensible para agregar información personalizada al código (ensamblados, tipos, miembros, valores de retorno y parámetros) y suelen tener una sintáxis entre corchetes
[ObsoleteAttribute].
- Entonces me quedo con Campo y Propiedad, aquí la diferencia es que un Campo es simplemente la declaración de una variable dentro de una Clase o Estructura, y Propiedad es un híbrido entre Campo y Método, ya que este se comporta como un Campo desde fuera de la clase pero en realidad trabaja como un par de Métodos Get y Set, automáticamente se llama al Método Get cuando se lee, y se llama al Método Set cuando se escribe.
Ej.: Campo:
class Usuario {
public int usu_Id;
}
Ej.: Propiedad (automática):
class Usuario {
public int Usu_Id {get; set;}
}
Ej.: Propiedad (normal):
class Usuario {
private int usu_Id;
public int Usu_Id {
get { return usu_Id; }
set { usu_Id = value; }
}
- Como siempre se dice, la ventaja de las Propiedades sobre los Campos es que una Propiedad permite filtrar o sanitizar la entrada o salida de la variable gracias a los Métodos Get y Set que actúan como intermediarios.
- Por último, con respecto a los atajos para crear un Constructor, Propiedades, etc, se hacen dando un click derecho > insertar fragmento de código, ahí puedes ver una lista de varios fragmentos de código y también su Snipped o atajo, por ejemplo para:
-- Constructor: ctr
-- Propiedad: prop
-- Clase: class
-- For: for
-- etc, etc, etc
- Los Snipped son muy útiles en el IDE, ya que ahorran tiempo al escribir código, basta con escribir el snipped y dar dos veces Tab.
- El Constructor sirve para "hacer cosas" cuando se Instancia una Clase (se crea un Objeto nuevo), lo normal es inicializar valores para los Campos ya sea directamente o mediante Propiedades. Si ves que hay varios Constructores, uno sin parámetros y otros con parámetros es una funcionalidad más de C#, la Sobrecarga de Constructores, el propio lenguaje se encargará de utilizar el Constructor adecuando de acuerdo a los parámetros dados.
Ej.: Constructor vacio:
class Usuario {
private int usu_Id;
public int Usu_Id {
get { return usu_Id; }
set { usu_Id = value; }
public Usuario(){}
}
Ej.: Constructor normal:
class Usuario {
private int usu_Id;
public int Usu_Id {
get { return usu_Id; }
set { usu_Id = value; }
public Usuario(int id) {
Usu_Id = id;
}
}
Ej.: Constructor sobrecargado:
class Usuario {
private int usu_Id;
public int Usu_Id {
get { return usu_Id; }
set { usu_Id = value; }
public Usuario(){}
public Usuario(int id) {
Usu_Id = id;
}
}