Hardeep Singh Bhachu Ответов: 4

В C# при сборке статических переменных будет собираться мусор.


Можно ли собрать статическую переменную мусора в c#

public static int staticVariable = 0;


Что я уже пробовал:

Попытался установить статическую переменную в null.

F-ES Sitecore

Вы не можете установить переменные int в null, используйте "int?" вместо этого, если вы хотите "необязательный" int. Как объяснил ZurdoDev, статические переменные присоединяются к типу, который находится в домене приложения и не выгружается, поэтому сборка мусора не повлияет на вашу переменную. Если есть что-то, что вы хотите сделать, тогда объясните, что это такое.

4 Ответов

Рейтинг:
2

Patrice T

Цитата:
В C# при сборке статических переменных будет собираться мусор.

Короткий ответ: когда вы выйдете из приложения.
По определению, статическая переменная сохраняется в течение всего срока службы приложения.


Рейтинг:
2

Dave Kreskowiak

"Переменные" не являются мусором, собранным. Объекты, на которые больше не ссылается ни одна переменная или коллекция, собираются как мусор.

Если вы задали переменной значение null (только ссылочные переменные!), все, что вы сделали, это сказали переменной удалить любую ссылку на объект, который она держала. Как только все ссылки на этот объект (их может быть несколько!) исчезают, объект (блок памяти) становится пригодным для сборки мусора. Это не означает, что он будет немедленно собран и память будет возвращена в управляемую кучу. Он может задержаться на некоторое время.


Рейтинг:
0

OriginalGriff

public static int staticVariable = 0;

Цитата:
Попытался установить статическую переменную в null.

Чтобы добавить к тому, что сказали другие, вы не можете установить любое целое число в null поскольку все целые числа являются типами значений, которые не могут содержать null ценности. Только ссылочные типы и типы, допускающие обнуление, могут быть назначены null.
Все примитивные типы C# являются типами значений, за исключением string:
byte	
sbyte	
char	
decimal
double
float	
int	
uint	
long	
ulong	
object
short	
ushort