C# thisとbaseの違いとサンプル

C#のthisとbaseの違いとサンプルです。

目次

サンプル thisとbaseの違い
  thisでインスタンス変数を指す
  base.メソッドで親クラスのメソッドを実行
  コンストラクタのthis(オーバーロード)
  コンストラクタのbase(継承元を指定)

thisとbaseの違い

キーワード 意味
this 自分のクラスのインスタンスを指します。
base 親クラスのインスタンスを指します。
  • thisは自分のクラスのインスタンスを指します。
  • base.メソッドで親クラスのメソッドを実行できます。
  • this,baseは、コンストラクタでも使用されます。

 

thisでインスタンス変数を指す

using System;
class Employee
{
	public string name;
	public Employee(string name)
	{
		this.name = name;
	}
	public String getName()
	{
		return name;
	}
}
class Test1
{
	static void Main()
	{
		Employee emp = new Employee("suzuki");
		Console.WriteLine(emp.getName());//suzuki
	}
}

7行目は、thisを使用しています。
この場合、4行目の変数に値がセットされます。

仮にthisがなかった場合、nameはローカル変数となり、
4行目に値はセットされません。

 

base.メソッドで親クラスのメソッドを実行

using System;
class Employee
{
	public string getName()
	{
		return "suzuki";
	}
}
class Employee2 : Employee
{
	public string getName2()
	{
		return (base.getName());
	}
}
class Test1
{
	static void Main()
	{
		Employee2 emp = new Employee2();
		Console.WriteLine(emp.getName2());//suzuki
	}
}

9行目のクラスは、3行目のクラスを継承しています。
13行目はbaseで親クラスの4行目のメソッドを実行します。
21行目の結果は、親クラスで実行された値が出力されます

 

コンストラクタのthis(オーバーロード)

using System;
class Employee
{
	public string name;
	public Employee(string name)
	{
		this.name = name;
	}
	public Employee(int num):this("suzuki")
	{
	}
}
class Test1
{
	static void Main()
	{
		Employee emp = new Employee(100);
		Console.WriteLine(emp.name);//suzuki
	}
}

5,9行目は、オーバーロードです。コンストラクタ名が同じで引数が異なるものです。

9行目のthisは、string型の引数が1つなので一致する5行目のコンストラクタを指します。

 

コンストラクタのbase(継承元を指定)

using System;
class Employee
{
	public string name;
	public Employee(string name)
	{
		this.name = name;
	}
}
class Employee2 : Employee
{
	public Employee2(int num) : base("suzuki")
	{
	}
}
class Test1
{
	static void Main()
	{
		Employee2 emp = new Employee2(100);
		Console.WriteLine(emp.name); //suzuki
	}
}

12行目は、コンストラクタです。
12行目のbaseは、親クラスの5行目のコンストラクタを実行します。

関連の記事

C#入門 クラスの仕組みとサンプル

△上に戻る