KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I recently came across this Stackoverflow question: When to use struct? In it, it had an answer that said something a bit profound: In addition, realize that when a struct implements an interface - as Enumerator does - and is cast to that implemented type, the struct becomes a reference type and is moved to the heap. Internal to the Dictionary class, Enumerator is still a value type. However, as soon as a method calls GetEnumerator(), a reference-type IEnumerator is returned. Exactly what does this mean? If I had something like struct Foo : IFoo { public int Foobar; } class Bar { public IFoo Biz{get; set;} //assume this is Foo } ... var b=new Bar(); var f=b.Biz; f.Foobar=123; //What would happen here b.Biz.Foobar=567; //would this overwrite the above, or would it have no effect? b.Biz=new Foo(); //and here!? What exactly are the detailed semantics of a value-type structure being treated like a reference-type?
Tags (comma-separated)
Save Edits
Cancel