2012-06-25 3 views
0

Идентификатор должен быть i в методе Iteration для возвращаемого значения для Iteration() .... в настоящий момент он ошибочно говорит, что он не имеет возвращаемого значения. Я предполагаю, что он находится в инструкции for.Получение значения in for statement в качестве возвращаемого значения

using System; 

class Program 
{ 
int i = 1; 

static string globalValue = "I was declared outside any method"; 

static void Main() 
{ 
    for (int b = 0; b < 101; b++) 
    { 
     Console.Write(Iteration()); 
    } 
} 
static string FizzBuzz() 
{ 
    string f = "word1"; 

    return f; 
} 
static string Buzz() 
{ 
    string b = "word2"; 

    return b; 
} 
static int Iteration() 
{ 
    for (int i = 0; i < 101; i++) 
    { 
     return i; 
    } 



} 

}

+0

Что именно вы пытаетесь сделать? Вы хотите распечатать цифры от 0 до 100 сто раз? – brianestey

+1

Это будет печатать только 100 '0', даже когда вы его заработаете ... Не ваша цель, я угадываю. – nunespascal

ответ

4

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

Просто положите return -1; в конце функции после цикла, чтобы удовлетворить компилятор.

Хотя, конечно, код, который у вас есть сейчас, не имеет большого смысла, так как Iteration() всегда будет возвращать 0. Он не пройдет весь цикл, так как функция может возвращать только одно значение. (Исключающие блоки представляют собой синтаксическое исключение, но не исключение ).

0

Без компиляции, если вы говорите, что функция Итерации жалуется, что все пути кода не возвращают целое число, это потому, что возврат включен в значение for, которое компилятор не знает, будет ли цикл фактически бежать или нет. Возможно:

static int Iteration() 
{ 
    int retValue = 0;  // some default value 
    for (int i = 0; i < 101; i++) 
    { 
     retValue = i; 
     break;   // break when you get the iteration you want   
    } 

    return retValue; 
} 

Хотя код на самом деле не имеет смысла, он должен сработать для вас.

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