Я недавно начал изучать C # и создал базовую программу, которая противоречит классу, представляющему компанию, и еще одной, представляющей сотрудников.Company
класс содержит метод для найма Employee
(в основном, добавить в список Employee
с).
Вот код для Company
:
using System;
using System.Collections.Generic;
namespace tutorial {
static public class Company {
static public List<Employee> employees = new List<Employee>();
static public void Hire (Employee emp) {
employees.Add(emp);
}
static public void ListEmployees () {
foreach (Employee emp in employees) {
Console.WriteLine(emp);
}
}
}
}
Вот основная программа:
using System;
namespace tutorial {
class Program {
static void Main(string[] args) {
Console.WriteLine("Hello World!");
Company.Hire(new Employee("John", "Smith", DateTime.Now));
Company.Hire(new Employee("Jane", "Smith", DateTime.Now));
Company.ListEmployees();
}
}
}
Тогда у меня такой вопрос: когда можно создать / 1013 * созданные объекты, чтобы удалить / собрать мусор?
Ответственный за C #класс говорит мне, что это может произойти, как только вернется метод Hire
.Это означает, что ListEmployees
может читать пустой список.
Однако, ListEmployees
работает как ожидалось.Более того, я понимаю, что используется подсчет ссылок, поэтому Employee
не будут удалены, пока существует статический класс Company
(то есть, пока работает программа).
Может ли кто-нибудь сказать мне, как здесь работает управление памятью?Я ошибаюсь в своем понимании подсчета ссылок?