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