Статические переменные имеют ту же или схожую функциональность в C#, как они делают в C++?
Править:
С C++ можно использовать статические переменные во многих различных контекстах - таких как: 1) Глобальные переменные, 2) Локальные функциональные переменные, 3) Участники класса - Были бы подобные использования в C# вести себя подобные C# C++?
Например:
class MyClass
{
public:
MyClass()
{x = 0;}
MyClass(int X)
{x = X;}
private:
int x;
};
int main()
{
MyClass myObject(56); // initialize x to value '56'
MyClass myObject2; //calls default constructor and initializes x to 0
return 0;
}
-121--2661056- Вы уверены, что функция возвращает m _ refCount
?
Я считаю, что доступ к члену переменным или методам после удаления объекта не определен в соответствии со стандартом, и никогда нельзя надежно это сделать.
Я думаю, что это может сработать только в путь, если метод Release ()
создаст локальную переменную в стеке с копией ссылочного числа, и это будет возвращено с помощью оптимизации возвращаемого значения .
Статический имеет несколько значений в C++.
Статические переменные в C # в основном имеют только одно значение: переменные относятся к типу. В C # статическая переменная типа используется для обозначения переменной в области типа. Статический для метода - это метод в области типа. Static также можно использовать для класса, чтобы указать, что весь класс состоит только из статических методов, свойств и полей.
Нет эквивалента статическим переменным в области действия функции или статическим значениям, не входящим в область действия класса.
Edit:
В ответ на изменение C # в основном использует статику только для членов класса. Глобальные и локальные переменные статических функций не поддерживаются в C #. Кроме того, как я уже упоминал выше, можно пометить целый класс «static», что в основном просто заставляет компилятор проверять отсутствие нестатических членов в классе.
Статическая переменная в C # ведет себя как статическая переменная-член в C ++. Это из множества значений ключевого слова static в C ++ только одно из них существует в контексте C #. Например. вы не можете ограничить область видимости файлом с помощью static (что является строго функцией C) в C #