c #: статическая переменная в статическом методе - PullRequest
20 голосов
/ 24 декабря 2010

Можете ли вы иметь статическую переменную в статическом методе?Будет ли значение этой переменной сохраняться во всех вызовах метода?

например.

public static void MyMethod()
{
    static int x = 0;
    x++;
}

Ответы [ 3 ]

21 голосов
/ 24 декабря 2010

Нет.

Вы не можете иметь локальные статические переменные.

С MSDN :

C # не поддерживает статические локальные переменные (переменные, которыеобъявлено в объеме метода).

И здесь :

Статический модификатор можно использовать с классами, полями, методами, свойствами, операторами, событиями и конструкторами, ноего нельзя использовать с индексаторами, деструкторами или типами, отличными от классов.

Как видите, локальные переменные не упомянуты.


Вы можете , однако используйте статическое поле:

public class MyClass
{
    private static int MyVariable = 10;

    public static void MyMethod()
    {
        MyVariable++;
    }
}
6 голосов
/ 24 декабря 2010

Нет, но вы могли бы иметь:

private static int x = 0;
public static void MyMethod()
{
     x++;
} 
0 голосов
/ 24 декабря 2010

C # - объектно-ориентированный язык программирования, C - процедурный язык программирования.

Это в основном означает, что в C логично иметь статическую переменную в функциональном блоке. В C # класс является базовым блоком, поэтому логично иметь в классе только статический член.

Так вот (в двух словах), почему в функциях C # нет статических переменных.

Вы можете использовать статический член в классе и использовать его в функции, чтобы получить тот же эффект.

Кстати, C ++ находится в середине, он ввел ООП в С, но это еще не чистый ООП. Поскольку функции все еще могут быть автономными, у вас все еще есть статические переменные в функциях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...