TOC

This article is currently in the process of being translated into Spanish (~99% done).

Clases:

Fields

Uno de los bloques de construcción más básicos es un campo. Es como una variable, como hablamos previamente, pero definido en el nivel de clase en lugar de en el nivel método. La diferencia es bastante importante y tiene que ver con el concepto de alcances, que decide desde dónde puede ser accedida una variable: Una variable local (definida dentro de un método) solo puede ser accedida desde este método específico, mientras que un campo de clase puede ser accedido desde todos los métodos de una clase e incluso desde métodos de otras clases si la visibilidad lo permite.

En otras palabras, la diferencia entre una variable y un campo es más o menos dónde se declara. Una variable a nivel de clase se conoce como un campo, mientras que una variable a nivel de método generalmente se conoce como variable.

Los campos a menudo se declaran cerca de la parte superior de la clase y su visibilidad a menudo se establecen en privado (discutiremos la visibilidad más adelante en este capítulo). Podría verse así:

public class FieldsSample
{
	private string name;
	....

Ahora tenemos una variable de nivel de clase llamada "name", a la que se puede acceder desde todos los métodos de esta clase. No se puede acceder desde fuera de la clase, pero solo porque lo hemos marcado como privado(private). Usted es libre de declarar sus campos como protegido(protected) si desea acceder a ellos desde clases derivadas o incluso público(public) si desea acceder a ellos desde cualquier lugar, pero tenga en cuenta que la forma recomendada de acceder a los campos de fuera de una clase es a través de propiedades, que discutiremos en el siguiente artículo.

En nuestro ejemplo anterior, nuestra variable "name" no tiene un valor inicial, lo que significa que tendrá que asignarle algo antes de poder usarlo. Si ya sabe con qué valor debe comenzar su campo, puede asignarlo fácilmente al mismo tiempo que lo declare:

public class FieldsSample
{
	private string name = "John Doe";
	....

Como alternativa, podemos asignar valores al campo en el constructor de la clase. Esto sobreescribirá cualquier valor asignado al campo en la declaración y nos permitirá la asignación de valores dinámicos.

Como hemos hablado anteriormente, los miembros de una clase pueden ser accedidos con la notación punto, como "class.member". Sin embargo, cuando accedemos a un miembro de la clase actual, usamos la palabra clave "this", como "this.member". Aquí tenemos un ejemplo más claro donde declaramos un par de campos y los usamos dentro de un método.

public class Fields1
{
	private string name = "John Doe";
	private int age = 42;

	public void Describe()
	{
		string description = this.name + " is " + this.age + " years old...";
		Console.WriteLine(description);
	}
}

En el método Describe() [Describir()] (no te preocupes, hablaremos de los métodos en uno de los siguientes artículos), vamos a declarar una variable local llamada "description" [descripción], con un valor basado en dos campos declarados. La variable "description" [descripción] es un ejemplo genial de como una variable debe ser siempre una variable y nunca un campo: es temporal y solo es relevante para el método que la usa, donde el campo puede perfectamente ser relevante en otros métodos de la clase.

Resumen

Los campos actuan parecido a una variable global, debido a que pueden usarse para almacenar información y ser accedidos desde cualquier parte dentro de la clase. También pueden ser accedidos desde fuera de la clase que las define, pero normalmente, son las propiedades las que se usan para ese propósito. Hablaremos de las propiedades en el siguiente artículo.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!