2014-11-03 6 views
0

Я просматриваю код. VS отмечает оператор return как команду избыточного управления потоком управления и предлагает удалить его. Какой был бы правильный синтаксис?Резервное управление потоком управления потоком

private async void TokenButton_Click(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      var accountType = _settings["account_type"]; 

      if (accountType.Equals(AccountTypeMicrosoft)) 
      { 
       this.Status.Text += "The original token is good for Live. No new token is needed.\n"; 
      } 
      else 
      { 
       // Get access token for the target service 
       if (!await GetAccessTokenForServiceAsync().ConfigureAwait(true)) 
       { 
        return; 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      this.Status.Text += "Exception caught: '" + ex.Message + "'."; 
      this.Status.Foreground = _errorBrush; 
     } 
    } 

ответ

2

Удалить всю if и заменить его:

await GetAccessTokenForServiceAsync().ConfigureAwait(true) 

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

+1

И удалить все это в целом, если это вызов чистая функция –

2

Ваша функция делает что-то вроде этого: if (condition) { return; } return; Оператор возврата является избыточным.

+0

Я хотел бы отметить, что, если 'GetAccessTokenForServiceAsync(). ConfigureAwait (true) 'имели побочные эффекты, тогда вам все равно придется оценивать« условие ». –

0

Вы можете проверить условия проверки первого, а затем выполнить обработку как

if (!await GetAccessTokenForServiceAsync().ConfigureAwait(true)) 
    { 
     return; 
    } 

    try { 
     var accountType = _settings["account_type"]; 

     if (accountType.Equals(AccountTypeMicrosoft)) 
     { 
      this.Status.Text += "The original ... "; 
     } 
    } 

    catch() {} 
Смежные вопросы