C#のパラメーター化されたコンストラクターとは?定義方法と実例をわかりやすく解説
C#では、コンストラクターに引数(パラメーター)を持たせることができます。このようなコンストラクターは「パラメーター化されたコンストラクター」と呼ばれます。この手法を活用することで、オブジェクトを生成するタイミングで初期値を渡し、フィールドに代入することが可能になります。
まず、基本的な構造を見てみましょう。以下はクラスの定義例です。
// クラスの定義 class Demo
パラメーター付きコンストラクターの定義方法
次の例は、rankというint型のパラメーターを受け取るパラメーター化されたコンストラクターです。
public Demo(int rank) {
Console.WriteLine("RANK = {0}", rank);
}
引数として受け取った値を、そのままコンソールに出力しています。このように、コンストラクターに引数を定義しておけば、newキーワードでインスタンスを生成する際に値を渡すことができます。
C#でのパラメーター化コンストラクターの完全なサンプルコード
ここからは、C#でパラメーター化されたコンストラクターを実際に使う方法を、完全なサンプルコードで確認していきましょう。以下の例では、線分の長さを管理するLineクラスを定義し、オブジェクト生成時に長さの初期値を設定しています。
サンプルコード
using System;
namespace Demo {
class Line {
private double length; // 線分の長さ
// パラメーター化されたコンストラクター
public Line(double len) {
Console.WriteLine("Object is being created, length = {0}", len);
length = len;
}
public void setLength( double len ) {
length = len;
}
public double getLength() {
return length;
}
static void Main(string[] args) {
// コンストラクターに10.0を渡してオブジェクトを生成
Line line = new Line(10.0);
Console.WriteLine("Length of line : {0}", line.getLength());
// 長さを変更
line.setLength(6.0);
Console.WriteLine("Length of line : {0}", line.getLength());
Console.ReadKey();
}
}
}
実行結果
Object is being created, length = 10 Length of line : 10 Length of line : 6
コードのポイント解説
このサンプルコードの動作を順番に見ていきます。
1. オブジェクト生成時に初期値を渡すnew Line(10.0) のように引数を指定してインスタンスを生成すると、パラメーター化されたコンストラクターが自動的に呼び出され、lengthフィールドに10.0が代入されます。同時に「Object is being created, length = 10」というメッセージが出力されます。
2. 初期値の確認getLength()メソッドを使って取得した値は10となり、コンストラクターで初期化が正しく行われたことがわかります。
3. 値の更新
その後、setLength(6.0)メソッドで長さを6.0に変更すると、再度の出力では6が表示されます。
まとめ
パラメーター化されたコンストラクターを使うことで、オブジェクトの生成と初期化を一度に行えます。これにより、インスタンスを作成した直後から意味のある状態でオブジェクトを扱えるようになり、コードの可読性や安全性も向上します。デフォルトコンストラクターとの違いを理解し、状況に応じて使い分けることが、C#のオブジェクト指向プログラミングにおいて重要なポイントです。
-
C#のデストラクタとは?基本の仕組みと実装例をわかりやすく解説
デストラクタ(Destructor)とは、クラスが持つ特殊なメンバー関数の一つで、そのクラスのオブジェクトがスコープ外に出たり、破棄されたりするタイミングで自動的に実行されるものです。主に、オブジェクトが使用していたリソースを解放するために利用されます。デストラクタの命名ルールデストラクタの名前は、クラス名と完全に同じで、先頭にチルダ記号(~)を付けるという決まりがあります。たとえば、クラス名が「Demo」の場合、デストラクタは「~Demo()」と記述します。public Demo() { // コンストラクタ Console.WriteLine(Object is being cre
-
Javaのデフォルトコンストラクタと引数付きコンストラクタの違いとは?わかりやすく解説
Javaにおけるコンストラクタは、オブジェクト生成時に自動的に呼び出される特殊なメソッドで、インスタンス変数の初期化を担います。コンストラクタは大きく分けて「デフォルトコンストラクタ」と「引数付きコンストラクタ(パラメータ化コンストラクタ)」の2種類があります。本記事では、それぞれの特徴と違いを具体例とともに解説します。 デフォルトコンストラクタとは デフォルトコンストラクタは、引数を一切取らないコンストラクタであり、内部ではスーパークラスのコンストラクタを引数なしで呼び出します。 主な役割は、新しく生成されたオブジェクトにデフォルト値を割り当てることです。 コンパイラがデフォルトコンストラ