Open wrexbe opened 2 years ago
Tagging subscribers to this area: @dotnet/area-system-collections See info in area-owners.md if you want to be subscribed.
Author: | wrexbe |
---|---|
Assignees: | - |
Labels: | `area-System.Collections` |
Milestone: | - |
Both HashSet and Dictionary have been improved to support removal during enumeration. The docs may just benefit from updating.
Related: Remove version increment from Dictionary<K,V>.Remove
overloads
I was not aware that it affects the HashSet<T>
collection too though.
Description
I found some code that was looping over a hashset, and removing items. Hashset is not throwing when you remove while enumerating like it used to. It's convenient that it's like this, but it's different then how it used to work, and I'm not sure if it's safe.
The documentation says it should throw, so either the documentation needs to be updated, or the Hashset needs to be fixed. https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1.getenumerator?view=net-6.0
Reproduction Steps
Expected behavior
Throws an invalid operation exception
Actual behavior
It works
Regression?
.Net 3.1 throws
Known Workarounds
Don't do it?
Configuration
No response
Other information
No response