title: understanding private setters
body: <p>I don't understand the need of having private setters which started with C# 2. </p>
  
  <p>Having a setter method for me is letting the user to set some variables in that class. In doing so, we will not expose the variables directly to the users. Instead we let them do it through this public setter method. </p>
  
  <p>This for me is using "encapsulation". There are some arguments out there which claim that private setters will let you apply encapsulation. </p>
  
  <p>Am I not using encapsulation by using public setter methods? Why do we need private setters? </p>
  
  <p>What is the difference between immutable class and a class with private setters? </p>