C# dieses Schlüsselwort
C# dieses Schlüsselwort
In diesem Artikel lernen wir dieses Schlüsselwort in C# anhand von Beispielen kennen.
In C#, this
Schlüsselwort bezieht sich auf die aktuelle Instanz einer Klasse. Zum Beispiel
using System;
namespace ThisKeyword {
class Test {
int num;
Test(int num) {
// this.num refers to the instance field
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
Im obigen Beispiel haben wir ein Objekt namens t1 erstellt der Klasse Test . Wir haben den Namen des Objekts t1 gedruckt und this
Schlüsselwort der Klasse.
Hier sehen wir den Namen von beiden t1 und this
ist dasselbe. Das liegt daran, dass this
Schlüsselwort bezieht sich auf die aktuelle Instanz der Klasse, die t1 ist .
Hier sind einige der wichtigsten Anwendungen von this
Schlüsselwort in C#.
C# dies mit gleichnamigen Variablen
Wir können nicht zwei oder mehr Variablen mit demselben Namen innerhalb eines Bereichs (Klasse oder Methode) deklarieren. Instanzvariablen und Parameter können jedoch denselben Namen haben. Zum Beispiel
using System;
namespace ThisKeyword {
class Test {
int num;
Test(int num) {
num = num;
}
static void Main(string[] args) {
Test t1 = new Test(4);
Console.WriteLine("value of num: " + t1.num);
Console.ReadLine();
}
}
}
Ausgabe
0
Im obigen Programm haben die Instanzvariable und der Parameter denselben Namen:num . Wir haben 4 passiert als Wert für den Konstruktor.
Wir erhalten jedoch 0 als Ausgabe. Dies liegt daran, dass C# verwirrt wird, weil die Namen der Instanzvariablen und des Parameters identisch sind.
Wir können dieses Problem lösen, indem wir this
verwenden .
Beispiel:dies mit gleichnamigen Variablen
using System;
namespace ThisKeyword {
class Test {
int num;
Test(int num) {
// this.num refers to the instance field
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
Jetzt erhalten wir die erwartete Ausgabe von 4 . Das liegt daran, dass this.num
verweist auf die Instanzvariable der Klasse.
Es gibt also keine Verwechslung zwischen den Namen der Instanzvariablen und des Parameters.
Aufrufen des Konstruktors derselben Klasse mit diesem
Beim Arbeiten mit dem Überladen von Konstruktoren müssen wir möglicherweise einen Konstruktor von einem anderen Konstruktor aufrufen. In diesem Fall können wir this
verwenden Stichwort. Beispiel:
using System;
namespace ThisKeyword {
class Test {
Test(int num1, int num2) {
Console.WriteLine("Constructor with two parameter");
}
// invokes the constructor with 2 parameters
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 parameter Constructor with one parameter
Im obigen Beispiel haben wir :
verwendet gefolgt von this
Schlüsselwort zum Aufrufen des Konstruktors Test(int num1, num2)
aus dem Konstruktor Test(int num)
.
Wenn wir die Test(int num)
anrufen Konstruktor der Test(int num1, int num2)
Konstruktor wird zuerst ausgeführt.
Hinweis :Das Aufrufen eines Konstruktors von einem anderen Konstruktor wird als Konstruktorverkettung bezeichnet.
C# this als Objektargument
Wir können this
verwenden -Schlüsselwort, um das aktuelle Objekt als Argument an eine Methode zu übergeben. Zum Beispiel
using System;
namespace ThisKeyword {
class Test {
int num1;
int num2;
Test() {
num1 = 22;
num2 = 33;
}
// method that accepts this as argument
void passParameter(Test t1) {
Console.WriteLine("num1: " + num1);
Console.WriteLine("num2: " + num2);
}
void display() {
// passing this as a parameter
passParameter(this);
}
public static void Main(String[] args) {
Test t1 = new Test();
t1.display();
Console.ReadLine();
}
}
}
Ausgabe
num1: 22 num2: 33
Im obigen Programm haben wir eine Methode passParameter() . Es akzeptiert das Objekt der Klasse als Argument.
passParameter(this);
Hier haben wir this
passiert zum passParameter() Methode. Als this
auf die Instanz der Klasse verweist, können wir auf den Wert von num1 zugreifen und num2 .
dies, um einen C#-Indexer zu deklarieren
Indexer ermöglichen es, Objekte einer Klasse genau wie Arrays zu indizieren. Wir verwenden dieses Schlüsselwort, um einen Indexer in C# zu deklarieren. Zum Beispiel
using System;
namespace ThisKeyword {
class Student {
private string[] name = new string[3];
// declaring an indexer
public string this[int index] {
// returns value of array element
get {
return name[index];
}
// sets value of array element
set {
name[index] = value;
}
}
}
class Program {
public static void Main() {
Student s1 = new Student();
s1[0] = "Ram";
s1[1] = "Shyam";
s1[2] = "Gopal";
for (int i = 0; i < 3; i++) {
Console.WriteLine(s1[i] + " ");
}
}
}
}
Ausgabe
Ram Shyam Gopal
Im obigen Programm haben wir einen Indexer mit this
erstellt Schlüsselwort.
Das Array name[] ist privat. Wir können also nicht über das Programm darauf zugreifen Klasse.
Um nun auf das Array zuzugreifen und den Wert des Arrays festzulegen, verwenden wir einen Indexer.
Student s1 = new Student();
s1[0] = "Ram";
s1[1] = "Shyam";
s1[2] = "Gopal";
Da wir this
verwendet haben Um einen Indexer zu erstellen, müssen wir das Objekt des Student verwenden Klasse für den Zugriff auf den Indexer. Weitere Informationen zum Indexer finden Sie unter C#-Indexer.
C Sprache
- Statisches C#-Schlüsselwort
- Globales Python-Schlüsselwort
- Java dieses Schlüsselwort
- Letztes Java-Schlüsselwort
- DS18B20-Sensor testen
- Lernprogramm zum Testautomatisierungsframework für codierte UI
- Turck TB3-CP80 Sensortestbox
- Pomona Magnetische Prüfspitzen MP1
- Smartphone-basierter COVID-19-Test
- Flying Probe Test (FPT):Machen Sie sich mit dieser PCB-Testtechnik vertraut