2013-08-16 3 views
1

Попытка добавить для каждого цикла в моей защищенной строковой функции, но продолжать получать ошибку: «Не все пути кода возвращают значение». Пожалуйста помоги.Для каждого цикла в защищенной строковой функции

protected string GetAmountStyle() 
{ 
    { 
    foreach (LFConnection ProdCurrConn in AllConn) 
    { 
     if (Login.Contains(ProdCurrConn.UserName) == false) 
     if ((Request.Browser.Browser.Contains("IE") == true)) 
     { 
      //th1.Attributes.Add("style", "padding-right: 5px;"); 
      //return "padding-right: 1px;"; 
      return "background-color: #FFFF66;"; 
     } 
     else 
     { 
      //th1.Attributes.Add("style", "padding-right: 5px;"); 
      return "background-color: #FFFF66;"; 
     } 
     else 
     { 
     //th1.Attributes.Add("style", "padding-right: 5px;"); 
     return string.Empty; 
     } 
    } 
+0

Подсказка: что произойдет, если AllConn пуст? – briantyler

ответ

5

Проблема в том, что если AllConn пуст, ваш метод никогда не вернет значение, так как у вас нет возврата после foreach.

Это означает, что ваша петля прямо сейчас также проверяет только первое значение в AllConn, так как каждый путь в пределах foreach возвращает некоторое значение, поэтому невозможно проверить второй элемент «Коннект».

Я подозреваю, что вам на самом деле после того, как что-то более, как:

protected string GetAmountStyle() 
{ 
    if (AllConn.Any(ProdCurrConn => !Login.Contains(ProdCurrConn.UserName)) 
    { 
     if ((Request.Browser.Browser.Contains("IE") == true)) 
     { 
      //th1.Attributes.Add("style", "padding-right: 5px;"); 
      //return "padding-right: 1px;"; 
      return "background-color: #FFFF66;"; 
     } 
     else 
     { 
      //th1.Attributes.Add("style", "padding-right: 5px;"); 
      return "background-color: #FFFF66;"; 
     } 
    } 

    return string.Empty; 
} 
0

А если AllConn - пустой набор, то какой путь возврата?

0

Подсказка: какой код возвращается, если AllConn пуст?

Добавить путь по умолчанию за пределами foreach; любой из:

return ""; 

return null; 

throw new InvalidOperationException("AllConn cannot be empty"); 

(или то, что вы хотите, на самом деле)

Примечание: это может быть, что вы знаете, чтоAllConn пусто не бывает из-за какого-то правила, что вы знаете о том, однако - компилятор не доверяет вам; логика foreach означает, что она не гарантируется когда-либо входить во внутренние утверждения.

0

Звуки для меня, как существует вероятность того, что «AllConn» может быть пустым, таким образом, условными в цикле никогда не получить выполняется, таким образом, функция Безразлично 't верните строку. Я бы включил оператор return для случая, когда цикл никогда не выполняется.

0

Если у вас в коллекции AllConn нет предметов, тогда ничего не будет возвращено. Попробуйте следующее:

protected string GetAmountStyle() 
{ 
    foreach (LFConnection ProdCurrConn in AllConn) 
    { 

     if (Login.Contains(ProdCurrConn.UserName) == false) 
     { 
      if ((Request.Browser.Browser.Contains("IE") == true)) 
      { 
       //th1.Attributes.Add("style", "padding-right: 5px;"); 
       //return "padding-right: 1px;"; 
       return "background-color: #FFFF66;"; 
      } 
      else 
      { 
       //th1.Attributes.Add("style", "padding-right: 5px;"); 
       return "background-color: #FFFF66;"; 
      } 
     } 
     else 
     { 
      //th1.Attributes.Add("style", "padding-right: 5px;"); 
      return string.Empty; 
     } 
    } 

    return string.Empty; 
} 
Смежные вопросы