title: What is immutability and why should I worry about it?
body: <p>I've read a couple of articles on immutability but still don't follow the concept very well.</p>
  
  <p>I made a thread on here recently which mentioned immutability, but as this is a topic in itself, I am making a dedicated thread now.</p>
  
  <p>I mentioned in the past thread that I thought immutability is the process of making an object read only and giving it low visibility. Another member said it didn't really have anything to do with that. <a href="http://blogs.msdn.com/lucabol/archive/2007/12/03/creating-an-immutable-value-object-in-c-part-i-using-a-class.aspx" rel="noreferrer">This page</a> (part of a <a href="http://blogs.msdn.com/lucabol/archive/2007/12/03/creating-an-immutable-value-object-in-c-part-i-using-a-class.aspx" rel="noreferrer">series</a>) uses an example of an immutable class/struct and it uses readonly and other concepts to lock it down.</p>
  
  <p>What exactly is the definition of state in the case of this example? State is a concept which I haven't really grasped.</p>
  
  <p>From a design guideline perspective, an immutable class must be one which does not accept user input and really would just return values?</p>
  
  <p>My understanding is that any object which just returns information should be immutable and "locked down", right? So if I want to return the current time in a dedicated class with that one method, I should use a reference type as that will work a reference of the type and thus I benefit from immutability.</p>