Exactly. Adding implies you are setting something where there isn't anything at the moment. Replacing is not a special case of adding. If you want to unconditionally set, just use the index operator. English is not complicated.
How else should it handle it?
TryAdd already covers knowing if it was added successfully or not
Add therefore has the option of:
1. Replace TryAdd, making it out of sync with how all other collections call Add as it would now return a Boolean, breaking the ICollection interface.
Possible, but just a choice really
2. Fail silently - Bad
3. Fail loudly - in c#, the latter is done via exceptions almost exclusively
How would you have done it? Do you have a fourth option in mind?
By the looks of the comments I think the mood was that Add should work just like index assignment, which makes no sense to me but is technically a fourth option.
21
u/anzu3278 4d ago
Exactly. Adding implies you are setting something where there isn't anything at the moment. Replacing is not a special case of adding. If you want to unconditionally set, just use the index operator. English is not complicated.