Я немного озадачен правильным способом написания кода.Я прочитал, что мне не нужно хранить ссылки на переменные, потому что сборка мусора не очищает его, но я не понял несколько вещей.
Что насчет этого кода:
private List<String> foo;
public List<String> bar ()
{
foo = new List<String>();
foo.add(something);
return foo;
}
Каждый раз, когда я вызываю метод bar, список old foo теряет ссылку, и она будет кандидатом на сборку мусора?Должен ли я объявить ( и инициализировать ???? ) большую часть переменной в начале класса и использовать после или объявить до и инициализировать внутри метода?
2.Как насчет удаленного объекта?Если я напишу этот код
private void browser_navigating(Object sender, NavigatingEventargs e)
{
Uri someurl = new URI(something);
List<String> somelist = new List<String>();
}
Если у меня есть 20 объектов webBrowser, которые используют событие навигации, они создают Uri и List, когда событие навигации запускается, верно?Но что происходит с объектом внутри события, когда я располагаю webBrowser?Они потеряют ссылку?Когда я распоряжаюсь чем-то, это работает для всех его детей, но работает ли оно и для тех объектов, которые не реализуют iDisposable (таких как Uri и List), поэтому они будут очищены от мусора или останутся в памяти?
2.1.Эти события автоматически регистрируются после того, как объект, который его зарегистрировал, удаляется?
3) Я прочитал, что статические объекты - это проблема утечек памяти.Как насчет того, если мне нужно использовать класс много раз, и я должен создавать его каждый раз, когда мне нужно объявить его статическим (например, в моем случае у меня есть класс статического соединения, который внутри имеет методы для входа и связи с веб-сервером, я объявляюstatic (в моем классе mainWinform), потому что я храню в нем файлы cookie, полученные от входа в систему)
Я буду благодарен вам, кто мог ответить на мои вопросы.