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行目のコンストラクタを実行します。
関連の記事
