C# のこのキーワード

WBOY
リリース: 2024-09-03 15:29:08
オリジナル
711 人が閲覧しました

C# では、「this」キーワードは、インスタンス メソッドまたはコンストラクター内から現在のクラスのインスタンス メンバーを参照するために使用されます。メソッド パラメーターとインスタンス変数が同じ名前である場合、それらの間の名前の曖昧さが解消されます。以下は、C# での「this」キーワードの使用例です:

  • 現在のオブジェクトの任意のメソッドを呼び出すために使用できます。
  • 同じクラスのコンストラクターから別のコンストラクターを呼び出すために使用できます。
  • 同じクラスのオブジェクトをパラメータとして受け取るメソッド呼び出しのパラメータとして使用できます。

説明付きの構文:

C# で 'this' キーワードを使用する構文は次のとおりです:

this.instance_variable
ログイン後にコピー

上記の構文では、「this」がキーワードで、instance_variable がクラスのインスタンス変数の名前です。

同じクラスのオブジェクトをパラメータとしてメソッドに渡す場合、構文は次のようになります。

method_name(this);
ログイン後にコピー

上記の構文では、「this」キーワードは現在のクラスのオブジェクトを指し、method_name は呼び出されるメソッドの名前です。

このキーワードは C# ではどのように機能しますか?

C# の「this」キーワードは、クラスの「this」ポインターとして使用されます。これは、クラスの現在のインスタンスを表すために使用されます。 C# では、「this」ポインターはクラスの非静的メンバーに対してのみ機能します。これは、「this」が現在のインスタンスで機能し、非静的メンバーにはクラスのインスタンスからアクセスできるためです。 「this」ポインタは、静的変数とメンバー関数に対しては機能しません。これらにアクセスするためのインスタンスは必要なく、それらはクラス レベルで存在するためです。

場合によっては、「this」キーワードを明示的に使用する必要はありません。現在のクラスのメソッドを呼び出すときと同様に、this の代わりに this.method_name() を使用します。「this」キーワードを使用せずにメソッドを直接呼び出すことができます。その場合、「this」キーワードはコンパイラによって自動的に追加されます。 .

以下に示す図を使って、上記の点を理解してみましょう。

C# のこのキーワード

C# でのこのキーワードの例

C# では「this」キーワードを使用する方法がたくさんあります:

例 #1

現在のインスタンスの変数とメンバー関数を参照するために使用されます。

コード:

using System;
namespace keywords
{
class ThisDemo
{
//instance variable
public string Message;
public string GetMessage()
{
return Message;
}
public void SetMessage(string Message)
{
//"this.Message" refers to instance variable (class member)
this.Message = Message;
}
}
public class program
{
public static void Main()
{
ThisDemo obj = new ThisDemo();
obj.SetMessage("Hello world!");
Console.WriteLine(obj.GetMessage());
}
}
}
ログイン後にコピー

出力:

C# のこのキーワード

例 #2

「this」キーワードを使用して、同じクラス内のメソッドを呼び出すことができます。

コード:

using System;
namespace keywords
{
public class Employee
{
void displaySalary()
{
//calling displayDetails() method of same class
this.displayDetails();
Console.WriteLine("Salary: Rs.50000");
}
void displayDetails()
{
Console.WriteLine("Name: ABC");
Console.WriteLine("ID: 123ABC");
}
public static void Main(String []args)
{
Employee emp = new Employee();
emp.displaySalary();
}
}
}
ログイン後にコピー

出力:

C# のこのキーワード

例 #3

「this」キーワードを使用して、同じクラス内のコンストラクターを呼び出すことができます。

コード:

using System;
namespace keywords
{
class Student
{
// calling another constructor of the same class
public Student() : this("ABC")
{
Console.WriteLine("Parameterless Constructer of Student class");
}
//parameterized constructor
public Student(string Name)
{
Console.WriteLine("Parameterized constructor of Student class");
}
public void display()
{
Console.WriteLine("display() method of Student class");
}
}
public class program
{
public static void Main()
{
Student stud = new Student();
stud.display();
}
}
}
ログイン後にコピー

出力:

C# のこのキーワード

例 #4

メソッドが同じクラスのオブジェクトをパラメータとして受け取る場合、そのメソッドの呼び出し中に「this」キーワードをパラメータとして使用できます。

同様に、メソッドは「this」キーワードを使用して同じクラスのオブジェクトを返すことができます。

コード:

using System;
namespace keywords
{
public class Student
{
double marks;
//method taking object of same class as parameter
void display(Student stud)
{
Console.WriteLine("Marks of student: "+stud.marks);
}
//method returning object of same class
Student addGradeMarks(double marks)
{
this.marks = marks + 5;
display(this);
return this;
}
public static void Main(String[] args)
{
Student stud = new Student();
stud = stud.addGradeMarks(85);
}
}
}
ログイン後にコピー

出力:

C# のこのキーワード

例 #5

これらの用途とは別に、「this」キーワードの重要な用途は、インデクサーを宣言するために使用できることです。

コード:

using System;
namespace keywords
{
public class World
{
private string[] continents = new string[7];
//declaring an indexer
public string this[int index]
{
get
{
return continents[index];
}
set
{
continents[index] = value;
}
}
}
public class ThisDemo
{
public static void Main()
{
World world = new World();
world[0] = "Asia";
world[1] = "Africa";
world[2] = "North America";
world[3] = "South America";
world[4] = "Antarctica";
world[5] = "Europe";
world[6] = "Australia";
for (int i = 0; i < 7; i++)
{
Console.Write(world[i]);
Console.Write("\n");
}
}
}
}
ログイン後にコピー

出力:

C# のこのキーワード

例 #6

「this」キーワードは拡張メソッドの宣言にも使用できます。

コード:

using System;
namespace keywords
{
//Class1 contains three methods; we will add two more methods in it
//without re-compiling it
class Class1
{
public void Method1()
{
Console.WriteLine("Method1");
}
public void Method2()
{
Console.WriteLine("Method2");
}
public void Method3()
{
Console.WriteLine("Method3");
}
}
// Class2 contains Method4 and Method5 methods
//which we want to add in Class1 class
static class Class2
{
public static void Method4(this Class1 class1)
{
Console.WriteLine("Method4");
}
public static void Method5(this Class1 class1, string str)
{
Console.WriteLine(str);
}
}
public class ThisDemo
{
public static void Main(string[] args)
{
Class1 class1 = new Class1();
class1.Method1();
class1.Method2();
class1.Method3();
class1.Method4();
class1.Method5("Method5");
}
}
}
ログイン後にコピー

出力:

C# のこのキーワード

結論

  • 「this」キーワードは、クラスの現在のインスタンスを表すために使用されます。
  • インスタンス変数とメソッドパラメータが同じ名前の場合、「this」キーワードを使用してそれらを区別できます。
  • 「this」はインデクサーの宣言に使用できます。
  • 静的メソッドでは「this」を使用できません。

以上がC# のこのキーワードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート