¿Puede alguien ayudarme a encontrar la diferencia básica entre mutable e inmutable?¿Cuál es la diferencia entre mutable e inmutable?
Respuesta
Immutable significa que una vez inicializado, el estado de un objeto no puede cambiar.
Mutable significa que sí.
Por ejemplo, las cadenas en .NET son inmutables. Cada vez que realiza una operación en una cuerda (molduras, carcasa superior, etc.) se crea una nueva cuerda.
En la práctica, si desea crear un tipo inmutable, solo permite getters en él y no permite ningún cambio de estado (por lo que cualquier campo privado no puede cambiar una vez que el constructor terminó de ejecutarse).
Un tipo inmutable no se puede cambiar una vez instanciado. Por ejemplo, las cadenas son inmutables. Cada vez que desee cambiar el valor de una cadena, se creará una nueva instancia.
Un very basic definition sería:
mutables objetos: Cuando se tiene una referencia a una instancia de un objeto, el contenido de esa instancia pueden ser alterados
inmutables Objetos: Cuando usted tiene una referencia a una instancia de un objeto, el contenido de esa instancia no puede ser alterado
Immutable significa "no se puede modificar después de haber sido creado".
- Un tipo inmutable tiene un constructor y captadores pero no definidores.
- Un tipo mutable también puede tener configuradores.
Un ejemplo de tipo inmutable es DateTime. El método AddMinutes
no modifica el objeto; crea y devuelve un nuevo DateTime.
Otro ejemplo es la cadena. Para una clase mutable similar a la cadena, puede usar la clase StringBuilder
.
No hay una palabra clave en C# para declarar un tipo como inmutable. En su lugar, debe marcar todos los campos de miembros como readonly
para asegurarse de que solo se puedan establecer en el constructor. Esto evitará que modifique accidentalmente uno de los campos, rompiendo la inmutabilidad.
Variables inmutables usando en lenguajes funcionales. El uso de una variable de término es inapropiado y los programadores funcionales prefieren el valor del término.
Ventajas de inmutabilidad:
1 hilo de seguridad
2 Compartiendo
3 menos propenso a errores
Así que prefieren la inmutabilidad, si usted tiene la elección.:)
Uso de referencia
imaginationhunt.blogspot
IS STRING MUTABLE OR IMMUTABLE IN .NET?
mutable: medios mutables cuyo estado se puede cambiar una vez creado.
Inmutables: medios inmutables cuyo estado no se puede cambiar una vez que se ha creado.
Los objetos de cadena son 'inmutables', lo que significa que no podemos modificar los caracteres contenidos en la cadena, también el funcionamiento en cadena produce una versión modificada en lugar de modificar los caracteres de la cadena.
- 1. Inmutable vs Mutable C#
- 2. La última palabra en NSStrings: mutable e inmutable
- 3. Clase mutable o inmutable?
- 4. Localización e internacionalización, ¿cuál es la diferencia?
- 5. ¿Cuál es la diferencia entre IDREF e IDREFS en XSD?
- 6. ¿Cuál es la diferencia entre Scope_Identity(), Identity(), @@ Identity e Ident_Current()?
- 7. ¿Cuál es la diferencia entre WAS e IIS?
- 8. ¿Cuál es la diferencia entre identidad e igualdad en OOP?
- 9. ¿Cuál es la diferencia entre las interfaces IComparable e IEquatable?
- 10. ¿Cuál es la diferencia entre "protegido" e "interno protegido"?
- 11. Cuál es la diferencia entre Add-PsSnapIn e Import-Module
- 12. ¿Cuál es la diferencia entre NHibernate e iBATIS.NET?
- 13. ¿Cuál es la diferencia entre IEnumerator e IEnumerable?
- 14. Erlang: ¿cuál es la diferencia entre "include_lib" e "include"?
- 15. ¿Cuál es la diferencia entre una clave principal e identidad?
- 16. ¿Cuál es la diferencia entre objeto e instancia?
- 17. ¿Cuál es la diferencia entre "privado" e "interno protegido"?
- 18. ¿Cuál es la diferencia entre import java.util. *; e importar java.util.Date; ?
- 19. ¿Cuál es la diferencia entre Tarea e hilo?
- 20. ¿Cuál es la diferencia entre ObservableCollection e INotifyPropertyChanged?
- 21. ¿Cuál es la diferencia entre size_t e int en C++?
- 22. Cuál es la diferencia entre 'índice' e 'índice de lista'
- 23. ¿Cuál es la diferencia entre Convert.Int32() e Int32.Parse()?
- 24. ¿Cuál es la diferencia entre IDelegateEvent e IEvent en F #?
- 25. ¿Cuál es la diferencia entre AxInterop e Interop?
- 26. Cuál es la diferencia entre IQueryable e IEnumerable
- 27. ¿cuál es la diferencia entre invalidateList e invalidateDisplayList?
- 28. ¿cuál es la diferencia entre IVT e IDT?
- 29. ¿Cuál es la diferencia entre require e include con php?
- 30. en Java ¿cuál es la diferencia entre, E, T
¡Errr, uno puede cambiar, el otro no! Hoy parece ser el día de las preguntas "especiales" ... – leppie
Tipos de inmutabilidad: http://blogs.msdn.com/b/ericlippert/archive/2007/11/13/immutability-in-c-part-one -kinds-of-immutability.aspx – LukeH
Gracias uno y alla –