Вы хотели бы использовать Clear
, если у вас есть другие ссылки на тот же объект, и вы хотите, чтобы все они указывали на один и тот же объект.
Например, возможно, у вас есть рабочая очередь, гдеВы храните задачи для выполнения.И в одном или нескольких потоках вы вынимаете рабочие элементы из этой очереди (конечно, вы используете блокировку, чтобы обеспечить доступ к очереди не более чем с одним потоком за раз).Если в какой-то момент вы хотите очистить очередь, вы можете использовать Clear
, и все потоки все равно будут указывать на один и тот же объект.
Как здесь при использовании Clear
все элементы будут удалены, и Count
будет 0, но Capacity
останется неизменным.Обычно неизменность Capacity
- это хорошая вещь (для эффективности), но может быть какой-то крайний случай, когда у вас есть тонна элементов, и вы хотите, чтобы эта память была в конечном счете освобождена.
Ссылка MSDN вышетакже упоминает, что Clear является O (n) операцией.Принимая во внимание, что простая замена ссылки будет операцией O (1), а затем, в конце концов, она будет собирать мусор, но, возможно, не сразу.Но замена ссылки также означает, что память, которая составляет емкость, должна быть перераспределена.