C# コンストラクタのサンプル

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行目は、インスタンスが消えるときに実行されます。

関連の記事

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

△上に戻る