Julian D. Mora
Son objetos cuyo estado o valor solo pueden ser establecidas en la inicialización del mismo.
public class ImmutableObject
{
private readonly string _name;
public string Name => _name;
public ImmutableObject(string name)
{
_name = name;
}
}
¿el objeto "Students" es inmutable?
public class Classroom
{
public readonly List<Student> Students;
public Classroom(List<Student> students)
{
Students = students;
}
}
No es inmutable, ya que se permite alterar la colección (agregar o quitar elementos de ella).
Para hacerlo inmutable, se puede usar una interfaz como ReadOnlyCollection, que no expone métodos para agregar.
// Inmutable
public class Classroom
{
public readonly ReadOnlyCollection<Student> Students;
public Classroom(ReadOnlyCollection<Student> students)
{
Students = students;
}
}
List<Students> list = new List<Student>();
// add students
Classroom c = new Classroom(list.AsReadOnly());
https://geeks.ms/jorge/2017/07/27/objetos-y-propiedades-inmutables-en-csharp/
https://riptutorial.com/es/csharp/example/8670/inmutabilidad
Bullet Three