Say I have a simple object such as
class Something
{
public int SomeInt { get; set; }
}
I have read that using immutable objects are faster and a better means of using business objects? If this is so, should i strive to make all my objects as such:
class ImmutableSomething
{
public int SomeInt { get { return m_someInt; } }
private int m_someInt = 0;
public void ChangeSomeInt(int newValue)
{
m_someInt = newvalue;
}
}
What do you reckon?
What you depict is not an immutable object; simply moving the
setcode into a dedicated setter method doesn’t make an object immutable. An immutable object, by definition, can’t change, so the fact that you can alter the value of any of the object’s properties or fields means that it isn’t immutable.In terms of “faster” or “better”, immutable objects are not intrinsically faster or “better” than mutable objects; there isn’t anything special about them, other than the fact that you can’t change any values.