2012-05-24 3 views
0

Интересно, почему мне нужно поставить обратный синтаксис дважды времени в коде ниже,о возвращении синтаксиса в C#

public string test(){ 
bool a = true; 
if(a){ 
    string result = "A is true"; 
}else{ 
    string result = "A is not true"; 
} 

    return result; 
} 

это делает ошибку, что говорят, что «результат» имя не существует в текущем контексте.

но в любом случае есть переменная результата. Хм ..

Так что я изменил код, как это,

public string test(){ 
bool a = true; 
if(a){ 
    string result = "A is true"; 
    return result; 
}else{ 
    string result = "A is not true"; 
    return result; 
} 
} 

Затем он работает. Правильно ли это так?

, пожалуйста, предоставьте мне,

Спасибо!

+4

Я очень сомневаюсь, что ваш второй код * на самом деле * работает. Вы не объявили переменную 'result' в любой точке. Обратите внимание, что ничто из этого не имеет ничего общего с ASP.NET - это просто C#. –

+0

Вы говорите «тогда это работает», но даже ваш второй фрагмент кода недействителен C#, если «результат» не объявлен в другом месте. Вы уверены, что это работает? –

ответ

7

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

public string test(){ 
bool a = true; 
string result = string.Empty; 
if(a){ 
    result = "A is true"; 
}else{ 
    result = "A is not true"; 
} 

    return result; 
} 

И если вы собираетесь идти со вторым блоком, который вы могли бы упростить его:

public string test(){ 
bool a = true; 
if(a){ 
    return "A is true"; 
}else{ 
    return "A is not true"; 
} 
} 

Или дальше:

public string test(){ 
bool a = true; 

return a ? "A is true" : "A is not true"; 
} 

И еще несколько итераций аналогичного кода (форматирование строк и т. Д.).

+1

Вам даже не нужно инициализировать 'result'. – Joey

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