Add documentation for using statements in iterators #48071
Draft
+48
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Addresses confusion about the relationship between
try
blocks andusing
statements in iterator methods by adding clear documentation and a working example.Problem
Anonymous feedback indicated confusion about whether
using
blocks can be used inside iterator functions and whether they get auto-disposed after the firstyield return
. This is a common source of confusion since iterators have restrictions ontry
blocks withcatch
clauses.Solution
Added a new section "Using statements in iterators" to the yield statement documentation that explains:
using
statements work correctly in iterators because they compile totry
/finally
blocks withoutcatch
clausesCode Example
The documentation includes a practical example demonstrating:
This example shows that even when iteration breaks early, the resource is properly disposed when the iterator is cleaned up.
Technical Details
The documentation explains that this works because the C# compiler transforms
using
statements intotry
/finally
blocks withoutcatch
clauses, which are explicitly permitted in iterator methods (unliketry
blocks withcatch
clauses).Fixes #45331.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.