2011-07-17 11 views
1

前回同様の質問がありましたが、ロジックステートメントの前に変数の値を初期化して設定すると、ロジックステートメント内で生成された値を使用できます。if文で宣言された変数の使い方は?

今回は、接続文字列が空であるかどうかによって、2つのメソッドオーバーロードのうちの1つを呼び出したいとします。そのようです。

if (ConnectionString != "") // if there is something in the config file work with it 
{ 
    SqlConnection dataConnection = new SqlConnection(ConnectionString); 
} 
else 
{ 
    SqlConnection dataConnection = new SqlConnection(); 
} 

try { 
    // ... 

問題は、tryブロック内のすべてが、dataConnectionについて認識しないために失敗することです。

これを動作させるにはどうすればよいですか?

+3

接続文字列がない場合は、どこから来ると思われますか? SqlConnectionがそれを作成するとは思わない、または空から落ちるだろう。あなたは 'else'の状態で何をしますか?クラッシュ? –

+0

はい、接続文字列ビルダーはtryブロックにあります。 – Rob

+0

すてきな答えをお寄せいただきありがとうございます!今非常にはっきりしています。 – Rob

答えて

3

は外(未初期化)、それを宣言します。

SqlConnection conn; 
if(string.IsNullOrEmpty(connectionString)) { 
    conn = new SqlConnection(); 
} else { 
    conn = new SqlConnection(connectionString); 
} 

をロジックは、条件付き単純な場合も可能です:

SqlConnection conn = string.IsNullOrEmpty(connectionString) 
    ? new SqlConnection() : new SqlConnection(connectionString); 

ブロックはusingブロックでははるかに使いやすく、インラインで行うことができます。

あなたがもしブロックの外側の変数を持っている必要が
6

あなたはこのようにそれを行うことができます。

SqlConnection dataConnection = !string.IsNullOrEmpty(ConnectionString) 
    ? new SqlConnection(ConnectionString) : new SqlConnection(); 

または:

SqlConnection dataConnection; 
if (string.IsNullOrEmpty(ConnectionString)) 
{ 
    dataConnection = new SqlConnection(ConnectionString); 
} 
else 
{ 
    dataConnection = new SqlConnection(); 
} 
1

:私は文

SqlConnection dataConnection = null; 
    if (ConnectionString != "") // if there is something in the config file work with it 
     { 
      dataConnection = new SqlConnection(ConnectionString); 
     } 
     else 
     { 
      dataConnection = new SqlConnection(); 
     } 
     try 
     { 
1

statment そしてif文の中でそれを使用してください。 そしてそれを使用する必要があるときは、それがヌルでないかどうかチェックしてください。

SqlConnection dataConnection = null; 
if (ConnectionString != "") // if there is something in the config file work with it 
{ 
    dataConnection = new SqlConnection(ConnectionString); 
} 
else 
{ 
    dataConnection = new SqlConnection(); 
} 
try 
{ 
    if(dataConnection != null) 
     DoWhatYouWant(); 
} 
1

は、あなたが側にいる場合にはnull値を持つ変数を宣言することができれば、あなたが前に接続を定義するべきだと思い

SqlConnection dataConnection; 
if (ConnectionString != "") // if there is something in the config file work with it 
{ 
    dataConnection = new SqlConnection(ConnectionString); 
} 
else 
{ 
    dataConnection = new SqlConnection(); 
} 
関連する問題