C#のコンストラクタのサンプルです。
目次
| サンプル | コンストラクタ | 
| コンストラクタのオーバーロード | |
| 別のコンストラクタを指定する(:this) | |
| 親クラスのコンストラクタを指定する(:base) | |
| 参考 | Visual Studioの機能でコンストラクタを自動で生成する | 
| デストラクタ | 
コンストラクタ
| class クラス名 { コンストラクタ名(引数){ 処理 } } | 
- コンストラクタは、new演算子でクラスをインスタンス化する時に呼ばれます。
- クラスの初期値を設定するときなどに使用されます。
- コンストラクタ名は、クラス名と同じにします。
- 戻り値はないので、戻り値の記述はしません。
- コンストラクタをオーバーロードすることもできます。
- 以下はMicrosoftのC#のコンストラクタのリンクです。
 https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/constructors
コンストラクタのサンプルです。
using System;
namespace Project1
{
	class Color
	{
		public string name;
		public Color(string name)
		{
			this.name = name;
		}
	}
	class Test1
	{
		static void Main()
		{
			Color c1 = new Color("緑");
			Console.WriteLine(c1.name); // 緑
		}
	}
}8行目がコンストラクタです。クラス名(Color)と同じ名前にします。
17行目でインスタンスが生成されると8行目のコンストラクタが呼ばれて引数の値(緑)が7行目の変数にセットされます。
コンストラクタのオーバーロード
コンストラクタのオーバーロードのサンプルです。
using System;
namespace Project1
{
	class Color
	{
		public string name;
		public Color(string name)
		{
			this.name = name;
		}
		public Color(int num)
		{
			this.name = "赤";
		}
	}
	class Test1
	{
		static void Main()
		{
			Color c1 = new Color(100);
			Console.WriteLine(c1.name); // 赤
		}
	}
}8,12行目がオーバーロードです。コンストラクタ名が同じで引数が異なるものです。
8行目は、インスタンス化する時にstring型の引数が1つのときに実行されます。
12行目は、インスタンス化する時にint型の引数が1つのときに実行されます。
21行目は、int型の引数が渡されるので12行目が実行されます。
別のコンストラクタを指定する(:this)
別のコンストラクタを指定するサンプルです。:thisを使用します。
using System;
namespace Project1
{
	class Color
	{
		public string name;
		public Color(string name)
		{
			this.name = name;
		}
		public Color(int num) : this("赤")
		{
		}
	}
	class Test1
	{
		static void Main()
		{
			Color c1 = new Color(100);
			Console.WriteLine(c1.name); // 赤
		}
	}
}8,12行目は、オーバーロードです。コンストラクタ名が同じで引数が異なるものです。
20行目は引数がintでひとつなので12行目が実行されます。
12行目は、thisがありString型の引数が1つなので8行目のコンストラクタを指します。
親クラスのコンストラクタを指定する(:base)
親クラスのコンストラクタを指定するサンプルです。:baseを使用します。
using System;
namespace Project1
{
	class Class1
	{
		public string colorName;
		public Class1(string name)
		{
			this.colorName = name;
		}
	}
	class Class2 : Class1
	{
		public Class2(string name) : base(name)
		{
		}
	}
	class Test1
	{
		static void Main()
		{
			Class1 c2 = new Class2("赤");
			Console.WriteLine(c2.colorName); //赤
		}
	}
}15行目の:baseは、親クラスの8行目のコンストラクタを実行します。
Visual Studioの機能でコンストラクタを自動で生成する
Visual Studioで、コンストラクタを自動で生成できます。
1.クラス名をクリックすると左端に電球のアイコンが表示されます。

2.電球の右にある下三角形をクリックし、「コンストラクターを生成する」をクリックして作成します。

デストラクタ
| class クラス名 { ~デストラクタ名(){ 処理 } } | 
- デストラクタは、インスタンスが消えるときに呼ばれます。
- 処理がいつ実行されるかわからないのであまり使用されません。
 →インスタンスはガベージコレクションの仕組みで消されます。
- デストラクタ名は、クラス名と同じにして先頭にチルダ(~)をつけます。
デストラクタのサンプルです。
namespace Project1
{
	class Class1
	{
		private string name;
		public Class1()
		{
			name = "test1";
		}
		~Class1()
		{
			name = "test2";
		}
	}
	class Test1
	{
		static void Main()
		{
			Class1 c1 = new Class1();
		}
	}
}10行目がデストラクタです。クラス名(Class1)と同じ名前にします。
12行目は、インスタンスが消えるときに実行されます。
関連の記事
