Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

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

  1. Statisches C#-Schlüsselwort
  2. Globales Python-Schlüsselwort
  3. Java dieses Schlüsselwort
  4. Letztes Java-Schlüsselwort
  5. DS18B20-Sensor testen
  6. Lernprogramm zum Testautomatisierungsframework für codierte UI
  7. Turck TB3-CP80 Sensortestbox
  8. Pomona Magnetische Prüfspitzen MP1
  9. Smartphone-basierter COVID-19-Test
  10. Flying Probe Test (FPT):Machen Sie sich mit dieser PCB-Testtechnik vertraut