Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C# dit trefwoord

C# dit zoekwoord

In dit artikel leren we over dit zoekwoord in C# aan de hand van voorbeelden.

In C#, this trefwoord verwijst naar de huidige instantie van een klasse. Bijvoorbeeld,

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

Uitvoer

object of this: ThisKeyword.Test
object of t1: ThisKeyword.Test

In het bovenstaande voorbeeld hebben we een object gemaakt met de naam t1 van de klas Test . We hebben de naam van het object t1 . afgedrukt en this trefwoord van de klas.

Hier zien we de naam van beide t1 en this is hetzelfde. Dit komt omdat this trefwoord verwijst naar de huidige instantie van de klasse die t1 . is .


Hier zijn enkele van de belangrijkste toepassingen van this zoekwoord in C#.

C# dit met dezelfde naamvariabelen

We kunnen geen twee of meer variabelen met dezelfde naam declareren binnen een bereik (klasse of methode). Instantievariabelen en parameters kunnen echter dezelfde naam hebben. Bijvoorbeeld,

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

Uitvoer

0

In het bovenstaande programma hebben de instantievariabele en de parameter dezelfde naam:num . We zijn geslaagd voor 4 als waarde voor de constructeur.

We krijgen echter 0 als uitgang. Dit komt omdat de C# in de war raakt omdat de namen van de instantievariabele en de parameter hetzelfde zijn.

We kunnen dit probleem oplossen door this . te gebruiken .

Voorbeeld:dit met dezelfde naamvariabelen

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

Uitvoer

value of num: 4

Nu krijgen we de verwachte output van 4 . Het is omdat this.num verwijst naar de instantievariabele van de klasse.

Er is dus geen verwarring tussen de namen van de instantievariabele en de parameter.


Roep de constructor van dezelfde klasse op met behulp hiervan

Tijdens het werken met constructoroverbelasting, moeten we mogelijk een constructor van een andere constructor aanroepen. In dit geval kunnen we this . gebruiken trefwoord. Bijvoorbeeld

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

Uitvoer

Constructor with two parameter
Constructor with one parameter

In het bovenstaande voorbeeld hebben we : . gebruikt gevolgd door this trefwoord om constructor Test(int num1, num2) aan te roepen van de constructor Test(int num) .

Wanneer we de Test(int num) . aanroepen constructor de Test(int num1, int num2) constructor wordt als eerste uitgevoerd.

Opmerking :Het aanroepen van een constructor van een andere constructor staat bekend als constructor chaining.


C# dit als een objectargument

We kunnen this . gebruiken sleutelwoord om het huidige object als argument door te geven aan een methode. Bijvoorbeeld,

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

Uitvoer

num1: 22
num2: 33

In het bovenstaande programma hebben we een methode passParameter() . Het accepteert het object van de klasse als argument.

passParameter(this);

Hier zijn we geslaagd voor this naar de passParameter() methode. Als this verwijst naar de instantie van de klasse, hebben we toegang tot de waarde van num1 en num2 .


dit om een ​​C#-indexer te declareren

Met indexeerders kunnen objecten van een klasse worden geïndexeerd, net als arrays. We gebruiken dit sleutelwoord om een ​​indexer in C# te declareren. Bijvoorbeeld,

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] + " ");
      }
    }
  }
}

Uitvoer

Ram
Shyam
Gopal

In het bovenstaande programma hebben we een indexer gemaakt met behulp van this zoekwoord.

De array naam[] is privé. We hebben er dus geen toegang toe vanuit het Programma klasse.

Om de waarde van de array te openen en in te stellen, gebruiken we nu een indexer.

Student s1 = new Student();
s1[0] = "Ram";
s1[1] = "Shyam";
s1[2] = "Gopal";

Zoals we this hebben gebruikt om een ​​indexeerder te maken, moeten we het object van de Student . gebruiken class om toegang te krijgen tot de indexer. Ga voor meer informatie over de indexer naar C# indexer.


C Taal

  1. Software testen bij RTI
  2. C# statisch trefwoord
  3. Algemeen Python-sleutelwoord
  4. Java dit trefwoord
  5. Java laatste trefwoord
  6. Test DS18B20-sensor
  7. Gecodeerde UI Test Automation Framework-zelfstudie
  8. Turck TB3-CP80 Sensor Testbox
  9. Pomona magnetische testsondes MP1
  10. Op smartphones gebaseerde COVID-19-test
  11. Flying Probe Test (FPT):weet over deze PCB-testtechniek