Статические переменные в C # - PullRequest
15 голосов
/ 08 мая 2009

В C # есть способ поместить статическую переменную в метод, подобный VB.Net?

Static myCollection As Collection

Ответы [ 5 ]

21 голосов
/ 08 мая 2009

Почему C # не поддерживает статический метод переменные?

В: В C ++ можно написать переменная статического метода и имеет переменная, которая может быть доступна только изнутри метода. C # не предоставить эту функцию. Почему?

A: Есть две причины, по которым C # не делает есть эта функция.

Во-первых, можно получить почти тот же эффект, имея статический уровень класса и метод добавления статика потребует увеличения сложность.

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

- msdn c # faq

5 голосов
/ 08 мая 2009

Нет, нет, но чем это отличается от наличия статической переменной на уровне класса?

На самом деле, если вы посмотрите на то, как реализован общий доступ, это трюк компилятора, который создает статическое поле в классе.

3 голосов
/ 08 мая 2009

Самое близкое к VB.NET Static - создать поле в текущем типе. Кроме этого C # не имеет эквивалента.

1 голос
/ 08 мая 2009

Нет, CLR не поддерживает это, и VB.NET прибегает к хитростям компилятора, чтобы разрешить это. Тьфу.

0 голосов
/ 08 мая 2009

Я почти уверен, что эквивалент C # равен const: поэтому:

public const Collection myCollection = new Collection();

Я не слишком знаком с VB.NET, поэтому я могу быть не в своей базе, но это позволит вам установить переменную, которую нельзя изменить.

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