Как использовать переменные, объявленные в операторе if? - PullRequest
1 голос
/ 17 июля 2011

В прошлый раз у меня был похожий вопрос, но мы выяснили, если инициализировать и установить значение для переменной перед логическим оператором, тогда я могу использовать значение, которое было сгенерировано в логическом операторе.

На этот раз я хочу вызвать одну из двух перегрузок методов в зависимости от того, пустая строка подключения или нет. Вот так.

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.

Как я могу сделать это так, чтобы это работало?

Ответы [ 5 ]

6 голосов
/ 17 июля 2011

Вы можете сделать это так:

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

Или:

SqlConnection dataConnection;
if (string.IsNullOrEmpty(ConnectionString))
{
    dataConnection = new SqlConnection(ConnectionString);
}
else
{
    dataConnection = new SqlConnection();
}
3 голосов
/ 17 июля 2011

Объявите это (неинициализировано) за пределами:

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, так как это может быть сделано внутри строки.

1 голос
/ 17 июля 2011

Вы можете объявить переменную с нулевым значением вне оператора if а затем использовать его внутри 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 голос
/ 17 июля 2011

Я думаю, что вы должны определить соединение до, если заявления

 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 голос
/ 17 июля 2011

Вы должны иметь переменную вне блока if:

SqlConnection dataConnection;
if (ConnectionString != "") // if there is something in the config file work with it
{
  dataConnection = new SqlConnection(ConnectionString);
}
else
{
  dataConnection = new SqlConnection();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...