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
- Software testen bij RTI
- C# statisch trefwoord
- Algemeen Python-sleutelwoord
- Java dit trefwoord
- Java laatste trefwoord
- Test DS18B20-sensor
- Gecodeerde UI Test Automation Framework-zelfstudie
- Turck TB3-CP80 Sensor Testbox
- Pomona magnetische testsondes MP1
- Op smartphones gebaseerde COVID-19-test
- Flying Probe Test (FPT):weet over deze PCB-testtechniek