2010-09-23 3 views
0

Могу ли я использовать переменную с именем «str» в коде ниже за пределами блока try, как у меня?Что касается области видимости некоторой переменной

Я немного смущен.

if() 
{ 
try 
{ 
    String str; 
} 
catch 
{ 
    //exception 
} 
String result=str; // Will this work ??? It's inside of IF block only. 
} 
+1

Вам нужно быть немного понятнее этого. Вы не имеете большого смысла –

+1

Не могли бы вы прочитать свой код и исправить его. вы не объявляете переменную 'var' в любом месте. – Oded

+0

Что вы ищете? – anishMarokey

ответ

1

Всегда объявляйте переменные перед блоком catch try и инициализируйте его значением null или значением по умолчанию, в зависимости от того, что применимо.

Не имеет значения, будете ли вы использовать переменную в try или catch или, наконец, или вообще не будете использовать ее. Это сэкономит ваши проблемы в будущем, и это улучшит читаемость вашего кода.

public void processSomeRequest() 
{ 

    string firstVariable = null; 
    string secondVariable = null; 
    int someInt = 0; 

    try 
    { 
     // Initialise variables 
     firstVariable = "test"; 
     secondVariable = "blah"; 

     // Process request code 
    } 
    catch(Exception e) 
    { 
     logException(e); 
     throw; 
    } 

} 

Основной пример, но вы знаете, с чем вы собираетесь работать с самого начала. Неиспользованные переменные будут выделены.

+0

объявить ПЕРЕД попыткой блока ?? не будут ли переменные за пределами области блока try тогда? Howz, который собирается wok .. Я имею в виду использовать переменную. Мне нужно объявить внутри блока. Правильно? – Serenity

+0

* заявить об этом * .. sry для опечатки – Serenity

+0

sry для немого комментария..got it..thnx – Serenity

1

Нет, все, что вы объявляете внутри try блока может быть использован только в пределах объема try блока.

Единственный способ доступа к переменной, которую вы используете в блоке try, где-то в другом месте, - объявить ее перед блоком try.

+0

почему нет ошибки компиляции тогда? – Serenity

+0

@user: потому что вы не использовали 'str' в другом месте. – RedFilter

+0

набрал var по ошибке:/hv отредактировал его сейчас – Serenity

0

Нет. Объявление ограничивается только блоком try. Вы даже не сможете использовать его в блоке catch.

2

Предполагая, что вы хотите получить строковый результат = str; ... нет, это не сработает.

+0

да, это была только str..hv, отредактировал его ... просто интересно, почему VS не показывает ошибку времени компиляции – Serenity

0

Если вы объявите переменную в пределах области действия области (что-либо в пределах {}), ее можно использовать только внутри нее.

1

Я думаю, что на ваш вопрос вы можете ссылаться на переменную, определенную в блоке try из-за пределов блока try. Ответ: нет, однако вы можете ссылаться на переменном, определенные вне блока попытаться создать внутри блока Ьги следующим образом:

string myVar; 

try 
{ 
    myVar = "something"; 
} 
catch {} 

// now you can set otherVar to "something" 
string otherVar = myVar; 
0

Нет, объявить «ули» за пределы Ьги {} блока.

Смежные вопросы