Value types are stored on Stack and reference types are stored on heap. Now here comes the twist as if a programmer by mistake or by intention returns a value from a method or property which is of type value it could lead to havoc.
Let’s take a look at this by an example;
After executing this program you will get the output as 0 instead of 4. This is because the property myNumber of class Arithmetics returns a copy of structure of type MyNumber and not reference type. If you replace the struct with class ypu will get result as 4 instead of 0, because in that case a reference will be passed.
What will be the impact of doing so?
If you call a method or access a property that returns a value-type object, do not modify it or call mutators (methods that modify its state or data) on it. You are dealing with a copy and any change you make does not affect the real instance.
Ref: .Net Gotchas
Let’s take a look at this by an example;
After executing this program you will get the output as 0 instead of 4. This is because the property myNumber of class Arithmetics returns a copy of structure of type MyNumber and not reference type. If you replace the struct with class ypu will get result as 4 instead of 0, because in that case a reference will be passed.
What will be the impact of doing so?
If you call a method or access a property that returns a value-type object, do not modify it or call mutators (methods that modify its state or data) on it. You are dealing with a copy and any change you make does not affect the real instance.
Ref: .Net Gotchas
No comments:
Post a Comment