2011-12-04 16 views
2

これは、パラメータが有効なデータで渡されない場合、オブジェクトのインスタンス化を中止する最も良い方法ですか?コンストラクタとスロー例外

protected Command(string commandKey) 
{ 
    if(commandKey == null) throw new ArgumentNullException("commandKey", "Command Key cannot be null as it is required internally by Command"); 
    if(commandKey == "") throw new ArgumentException("Command Key cannot be an empty string"); 
    CommandKey = commandKey; 
} 

答えて

1

はい。コンストラクタの引数を検証し、無効な場合は例外をスローするのが一般的な方法です。

0

これは完璧です。コンストラクタは何も返さないので、何かが間違っていたらどうやって知っていますか?初期化されていない状態にするにはブールを使うことができますが、例外もあります。また

if(String.IsNullOrEmpty(commandKey)) //throw exectpion 
+1

IsNullOrEmptyメソッドのヒントをありがとう! – Chris

0

あなたは、静的メソッドstring.IsNullOrEmpty(コマンドキー)を使用することができ、この場合:

protected Command(string commandKey) 
{ 
    if(string.IsNullOrEmpty(commandKey)) 
     throw new ArgumentException("commandKey"); 
    //something 
} 
+0

文字列が空白だけで構成されているかどうかを調べるメソッドstring.IsNullOrWhitespace()もあります。 –

0

をこれは、フレームワークのソースコードを見れば、マイクロソフトは何をするかを正確です私はそれが完全に有効だと思う。

0

コンストラクタ内で検証して何か問題が生じた場合に例外をスローすると、問題なく終了します。

関連する問題