2014-09-06 8 views
-3

Почему следующие коды возвращают 1,1,1 вместо 1,2,3? Я хотел бы сохранить значение int temp, чтобы использовать его в другом месте. И он работает, если я вызываю Console.WriteLine(count()) напрямую.Как использовать статические методы в C#

class Program 
{ 
    private static int start = 0; 
    static void Main(string[] args) 
    { 
     int temp = count(); 
     Console.WriteLine(temp); 
     temp = count(); 
     Console.WriteLine(temp); 
     temp = count(); 
     Console.WriteLine(temp); 
    } 

    static int count() 
    { 
     return start + 1; 
    } 
} 
+5

Не совсем уверен, что вы просите ... что не работает по этому поводу? Каково ожидаемое поведение? «не сработало» не очень много объясняет – Kritner

+0

Это действительно очень простые вещи. Вы объяснили им все в Интернете, включая документацию MSDN. Пожалуйста, объясните, что вы ожидаете (что вы подразумеваете под «нерабочим»), ссылаясь на эти источники, чтобы указать, какая часть, в частности, вас сбивает с толку. – BartoszKP

ответ

1

код Ndech будет выполнять желаемый результат от вашего (модифицированный) вопрос, почему вы видите 1,1,1 каждый раз, когда из-за:

static int count() 
{ 
    return start + 1; 
} 

при запуске = 0, если вы возвращаете начать + 1 каждый раз, когда вы вызываете отсчет(), то каждый раз, это будет b e 0 + 1. пример кода предоставляется Ndech будет делать:

start = 0; // before first console.write 
count(); 
start = 1; // first console.write 
count(); 
start = 2; 
etc... 

другой способ это может быть написано это:

static int count() 
{ 
    return ++start; // take the current value of start, and add one to it. 
} 
8

Если вы ожидаете, счетчик для возврата значения, который увеличивает при каждом вызове, вы должны сохранить измененное значение обратно в переменной:

static int count() 
{ 
    start = start + 1; 
    return start; 
} 
Смежные вопросы