C# Kata Kunci ini
C# Kata Kunci ini
Pada artikel ini, kita akan mempelajari tentang kata kunci ini dalam C# dengan bantuan contoh.
Dalam C#, this
kata kunci mengacu pada instance kelas saat ini. Misalnya,
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();
}
}
}
Keluaran
object of this: ThisKeyword.Test
object of t1: ThisKeyword.Test
Pada contoh di atas, kita telah membuat sebuah objek bernama t1 dari kelas Uji . Kami telah mencetak nama objek t1 dan this
kata kunci kelas.
Di sini, kita bisa melihat nama keduanya t1 dan this
adalah sama. Ini karena this
kata kunci mengacu pada instance kelas saat ini yaitu t1 .
Berikut adalah beberapa kegunaan utama this
kata kunci dalam C#.
C# ini dengan Variabel Nama yang Sama
Kita tidak dapat mendeklarasikan dua atau lebih variabel dengan nama yang sama di dalam suatu lingkup (kelas atau metode). Namun, variabel instan dan parameter mungkin memiliki nama yang sama. Misalnya,
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();
}
}
}
Keluaran
0
Dalam program di atas, variabel instan dan parameter memiliki nama yang sama:num . Kami telah melewati 4 sebagai nilai bagi konstruktor.
Namun, kami mendapatkan 0 sebagai keluaran. Ini karena C# menjadi bingung karena nama variabel instance dan parameternya sama.
Kami dapat mengatasi masalah ini dengan menggunakan this
.
Contoh:ini dengan Variabel Nama yang Sama
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();
}
}
}
Keluaran
value of num: 4
Sekarang, kita mendapatkan output yang diharapkan yaitu 4 . Itu karena this.num
mengacu pada variabel instan dari kelas.
Jadi, tidak ada kebingungan antara nama variabel instance dan parameter.
Memanggil Konstruktor dari Kelas yang Sama Menggunakan ini
Saat bekerja dengan overloading konstruktor, kita mungkin harus memanggil satu konstruktor dari konstruktor lain. Dalam hal ini, kita dapat menggunakan this
kata kunci. Misalnya,
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();
}
}
}
Keluaran
Constructor with two parameter
Constructor with one parameter
Dalam contoh di atas, kami telah menggunakan :
diikuti oleh this
kata kunci untuk memanggil konstruktor Test(int num1, num2)
dari konstruktor Test(int num)
.
Saat kita memanggil Test(int num)
konstruktor Test(int num1, int num2)
konstruktor dijalankan terlebih dahulu.
Catatan :Memanggil satu konstruktor dari konstruktor lain dikenal sebagai rantai konstruktor.
C# ini sebagai argumen objek
Kita dapat menggunakan this
kata kunci untuk meneruskan objek saat ini sebagai argumen ke metode. Misalnya,
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();
}
}
}
Keluaran
num1: 22
num2: 33
Dalam program di atas, kami memiliki metode passParameter() . Ia menerima objek kelas sebagai argumen.
passParameter(this);
Di sini, kami telah melewati this
ke passParameter() metode. Sebagai this
mengacu pada instance kelas, kami dapat mengakses nilai num1 dan num2 .
ini untuk mendeklarasikan pengindeks C#
Pengindeks memungkinkan objek kelas untuk diindeks seperti array. Kami menggunakan kata kunci ini untuk mendeklarasikan pengindeks di C#. Misalnya,
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] + " ");
}
}
}
}
Keluaran
Ram
Shyam
Gopal
Dalam program di atas, kami telah membuat pengindeks menggunakan this
kata kunci.
Array nama[] bersifat pribadi. Jadi, kami tidak dapat mengaksesnya dari Program kelas.
Sekarang, untuk mengakses dan mengatur nilai array, kita menggunakan pengindeks.
Student s1 = new Student();
s1[0] = "Ram";
s1[1] = "Shyam";
s1[2] = "Gopal";
Seperti yang telah kita gunakan this
untuk membuat pengindeks, kita harus menggunakan objek Student kelas untuk mengakses pengindeks. Untuk mengetahui lebih banyak tentang pengindeks, kunjungi pengindeks C#.