#266 – You Can’t Prevent a Method from Changing the Contents of Reference Types
March 10, 2011 Leave a comment
We saw that even when you pass a variable by value to a method, if that variable is a reference to an object, the method can change the contents of the object.
C# doesn’t have a built-in language construct that allows you to tell the compiler to prohibit a method from changing the contents of an object that a parameter references. (In C++, we can do this with the const keyword).
In C#, if you want to prevent a method from changing an object, you need to first clone your original object and pass a copy of the object to the method. (You’ll want to make a deep copy of the object).
Here’s an example of using the DeepCopy<T> method to pass a copy of the object.
kirby.BarkAt(DeepCopy<Dog>(jack));