C# this Schlüsselwort meistern
C# this Schlüsselwort meistern
Erkunden Sie das vielseitige C# this Schlüsselwort durch prägnante Erklärungen und reale Codebeispiele.
In C# bezieht sich this auf die aktuelle Instanz einer Klasse. Es ist unverzichtbar, um zwischen Instanzmembern und Methodenparametern zu unterscheiden, überladene Konstruktoren aufzurufen, das aktuelle Objekt an andere Methoden zu übergeben und Indexer zu deklarieren.
using System;
namespace ThisKeyword {
class Test {
int num;
Test(int num) {
// this.num bezieht sich auf das Instanzfeld
this.num = num;
Console.WriteLine("object of this: " + this);
}
static void Main(string[] args) {
Test t1 = new Test(4);
Console.WriteLine("object of t1: " + t1);
Console.ReadLine();
}
}
}
Ausgabe
object of this: ThisKeyword.Test object of t1: ThisKeyword.Test
Sowohl t1 als auch this referenzieren dieselbe Instanz; daher stimmen ihre Stringdarstellungen überein.
Gleichnamige Variablen unterscheiden
Instanzfelder und Parameter können denselben Namen haben, aber ohne this behandelt der Compiler die Referenz als Parameter, sodass das Feld unberührt bleibt.
using System;
namespace ThisKeyword {
class Test {
int num;
Test(int num) {
num = num; // weist Parameter sich selbst zu, Feld bleibt Standard (0)
}
static void Main(string[] args) {
Test t1 = new Test(4);
Console.WriteLine("value of num: " + t1.num);
Console.ReadLine();
}
}
}
Ausgabe
0
Die Ausgabe ist null, weil die Zuweisung das Feld nicht betrifft. this löst die Mehrdeutigkeit:
using System;
namespace ThisKeyword {
class Test {
int num;
Test(int num) {
// this.num bezieht sich auf das Instanzfeld
this.num = num;
}
static void Main(string[] args) {
Test t1 = new Test(4);
Console.WriteLine("value of num: " + t1.num);
Console.ReadLine();
}
}
}
Ausgabe
value of num: 4
Konstruktor-Verkettung mit this
Wenn eine Klasse mehrere Konstruktoren anbietet, kann einer einen anderen aufrufen, um Initialisierungslogik zu zentralisieren. Dies geschieht mit dem this Schlüsselwort nach einem Doppelpunkt in der Konstruktorsignatur.
using System;
namespace ThisKeyword {
class Test {
Test(int num1, int num2) {
Console.WriteLine("Constructor with two parameters");
}
// ruft den Zwei-Parameter-Konstruktor auf
Test(int num) : this(33, 22) {
Console.WriteLine("Constructor with one parameter");
}
public static void Main(string[] args) {
Test t1 = new Test(11);
Console.ReadLine();
}
}
}
Ausgabe
Constructor with two parameters Constructor with one parameter
Der Ein-Parameter-Konstruktor führt zuerst den Zwei-Parameter-Konstruktor aus, dann seinen eigenen Körper. Dieses Muster, bekannt als Konstruktor-Verkettung, hält Initialisierungslogik DRY.
Aktuelle Instanz an Methoden übergeben
Manchmal muss eine Methode auf dem Objekt operieren, das sie aufgerufen hat. this als Argument zu verwenden, macht die Absicht explizit.
using System;
namespace ThisKeyword {
class Test {
int num1; int num2;
Test() {
num1 = 22; num2 = 33;
}
// Methode, die Test Instanz akzeptiert
void PassParameter(Test t) {
Console.WriteLine("num1: " + t.num1);
Console.WriteLine("num2: " + t.num2);
}
void Display() {
// aktuelle Instanz übergeben
PassParameter(this);
}
public static void Main(string[] args) {
Test t1 = new Test();
t1.Display();
Console.ReadLine();
}
}
}
Ausgabe
num1: 22 num2: 33
Da this die aufrufende Instanz repräsentiert, kann die Methode sicher auf deren private Felder zugreifen.
Indexer mit this deklarieren
Indexer ermöglichen objektzugriff wie bei Arrays. Das this Schlüsselwort deklariert die Indexersignatur.
using System;
namespace ThisKeyword {
class Student {
private string[] names = new string[3];
// Indexer Deklaration
public string this[int index] {
get { return names[index]; }
set { names[index] = value; }
}
}
class Program {
public static void Main() {
Student s = new Student();
s[0] = "Ram"; s[1] = "Shyam"; s[2] = "Gopal";
for (int i = 0; i < 3; i++) {
Console.WriteLine(s[i]);
}
}
}
}
Ausgabe
Ram Shyam Gopal
Das private names Array wird über den Indexer zugegriffen, wobei Kapselung gewahrt bleibt und Array-ähnliche Syntax geboten wird.
Für tieferen Einblick in Indexer siehe Microsofts offizielle Dokumentation: C# Indexer.
C Sprache
- C# Static Keyword: Statische Variablen, Methoden und Klassen meistern
- Pythons global-Schlüsselwort meistern: Wie & wann man es verwendet
- Java this-Schlüsselwort erklärt: Praktische Anwendungen, Konstruktoren und mehr
- Javas final-Schlüsselwort verstehen: Variablen, Methoden und Klassen
- DS18B20 Temperatursensor am Raspberry Pi testen
- Coded UI Test Automation Framework: Umfassender Einsteigerleitfaden
- Turck TB3-CP80: Präziser Sensor-Testbox für induktive, magnetische, kapazitive & fotoelektrische Sensoren
- Pomona MP1 Magnetische Testsonde – 4mm Sicherheitsbuchse, Winkelausführung für präzise Industriediagnostik
- Schneller Smartphone-basierter COVID-19-Test liefert 10-Minuten-Ergebnisse mit hoher Genauigkeit
- Flying Probe Test (FPT): Professioneller Leitfaden zur zuverlässigen PCB-Funktionsverifikation