コンストラクタの前の動作。
- 題名: コンストラクタの前の動作。
- 著者: しらいわ
- 日時: 2010/06/10 20:27:22
- ID: 26925
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: コンストラクタの前の動作。
- 著者: るしぇ
- 日時: 2010/06/15 10:40:46
- ID: 26947
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: コンストラクタの前の動作。
- 著者: しらいわ
- 日時: 2010/06/15 19:50:51
- ID: 26951
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
2010/06/10(Thu) 20:29:10 編集(投稿者)
お世話になっております。
継承時に元のコンストラクタを呼ぶ場合や
複数のコンストラクタを呼ぶ場合、
「:base(引数)」や「:this(引数)」を付けることで
別のコンストラクタを呼び出しつつ他の処理も行えますが
「他の処理」は別のコンストラクタが呼び出された後の処理となります。
そこでコンストラクタを呼び出す前に
処理を行いたい場合の方法についてお尋ねします
自分では以下の方法を思い付いたのですがこれらの方法が
プログラミングの作法的に正しい物なのか判断出来ません。
ご教授よろしくお願いいたします。
また、他に方法がありましたらご教授お願い致します
1:引数でstaticメソッドを呼び出す
//Hogeクラスのコンストラクタ
public Hoge(int a ,bool flag):base(getstring(a ,flag))
{
//処理
}
//引数取得用のstaticメソッド
private static getstring(int value , bool flag)
{
if(flag)
{
return value.ToString();
}
else
{
return "Exception";
}
}
2:コンストラクタを呼び出さず専用の初期化staticメソッドを使う
Hoge obj = Hoge.ExConstructor(1 , true);
//Hogeクラスのコンストラクタ
private Hoge(string str):base(str)
{
//処理
}
//Hogeクラスのコンストラクタがわり
public static Hoge ExConstructor(int value , bool flag)
{
if(flag)
{
return new Hoge(value.ToString());
}
else
{
return new Hoge("Exception");
}
}