TOC

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

Klassen:

Fields

Einer der grundlegendsten Bausteine einer Klasse ist ein Feld. Es ist eine Variable die auf Klassenebene statt auf Methodenebene definiert wird. Der Unterschied der Definitionsebene ist sehr wichtig. Hier entscheidet sich, von wo aus auf eine Variable zugegriffen werden kann: Auf eine lokale Variable (innerhalb einer Methode definiert) kann nur von dieser speziellen Methode aus zugegriffen werden. Auf ein Klassenfeld kann von allen Methoden einer Klasse und anderer Klassen zugegriffen werden, wenn die Sichtbarkeit dies zulässt.

Mit anderen Worten: der Unterschied zwischen einer Variable und einem Feld ist vor allem wo es deklariert wurde. Eine Variable auf Klassenebene bezeichnet man als Feld, während eine Variable auf Methodenebene meist nur Variable genannt wird.

Felder werden oft im Kopf einer Klasse deklariert und ihre Sichtbarkeit auf private gesetzt. (Letzteres werden wir später in diesem Kapitel behandeln.) Aussehen könnte dies etwa so:

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

Wir haben nun eine Variable auf Klassenebene, welche sich "name" nennt. Auf diese kann nur von allen Methoden dieser Klasse heraus zugegriffen werden, nicht von außerhalb. Dieser Schutz besteht aufgrund der Deklaration als private. Es steht Ihnen frei Ihre Felder auch als protected zu deklarieren, falls von abgeleiteten Klassen auf sie zugegriffen werden soll. Sogar eine Definition als public ist möglich, sodass von überall aus ein Zugriff auf ein Feld möglich ist. Behalten Sie jedoch unbedingt im Hinterkopf dass der übliche Weg des Zugriffs von außerhalb ausschließlich über Eigenschaften führt. Diese werden wir im nächsten Abschnitt besprechen.

In unserem obigen Beispiel wird die Variable "name" nicht mit einem Ausgangswert initalisiert. Das bedeutet, Sie müssen ihr erst einen Wert zuweisen bevor Sie sie verwenden können. Wenn Sie schon im Vorfeld wissen, mit welchem Wert Ihr Feld starten soll, können Sie diesen ganz bequem gleichzeitig mit der Deklaration zuweisen.

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

Alternativ können Sie einem Feld auch im Konstruktor der Klasse einen Wert zuweisen. Dies überschreibt jeden Wert, der eventuell zum Deklarationszeitpunkt zugewiesen wurde und erlaubt die Zuweisung von dynamischen Werten.

Wie zuvor schon erwähnt kann über die Punktnotation auf Member einer Klasse zugegriffen werden, z. B. "class.member". Wenn wir auf Member der aktuellen Klasse zugreifen, nutzen wir dazu das Keyword "this", wie in "this.member". Nachfolgend ein etwas umfangreicheres Beispiel, in dem wir mehrere Felder deklarieren und dann innerhalb der Methode einsetzen:

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);
	}
}

In der Describe() Methode (Kein Sorge, wir kommen noch zu Methoden im nächsten Artikel) deklarieren wir eine lokale Variable namens "description" mit dem Wert basierend auf unseren zwei deklarierten Feldern. Die "description" Variable ist ein tolles Beispiel einer Variable, die immer eine Variable sein sollte und nie ein Feld: Sie ist temporär und nur relevant zur Methode, die Sie nutzt - die Felder hingegen könnten mühelos relevant in anderen Methoden der Klasse sein.

Zusammenfassung

Felder sind ein Bisschen wie globale Variablen, weil Sie genutzt werden können, um Daten zu speichern, die von überall innerhalb der Klasse verwendet werden können. Man kann auch von außerhalb der deklarierten Klasse auf Sie zugreifen, aber üblicherweise nutzt man für diesen Zweck Eigenschaften, um die es im nächsten Artikel geht.


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!