I have this (illustration only) C# code:
using( new System.IO.MemoryStream() ) {
System.Threading.Thread.Sleep(1000);
}
Note that here a MemoryStream
is created and not explicitly bound to a reference. So unless there's some special treatment because of the using
statement the object has no references to it and could be collected before control leaves the using
statement and maybe even before Sleep()
completes.
Is MemoryStream
eligible for collection before control leaves the using
statement?
No, it is NOT.
Behind the scenes, a hidden reference to the MemoryStream
has been created, so it is still alive.