Inmutable tipos de valor y tipos de referencia inmutables son semánticamente todos menos idéntica; las únicas diferencias son que los tipos de referencia soportan verificaciones de igualdad de referencia que pueden ser significativas o no, y que los tipos de valores pueden estar envueltos en un valor Nullable (De T) mientras que los tipos de referencia son anulables implícitamente. Si un tipo va a ser inmutable, dependiendo de cómo se utilizará, puede haber razones de rendimiento para favorecer una estructura o una clase; las estructuras son más rápidas para algunas operaciones (casi todas las operaciones, para tamaños inferiores a cuatro bytes), mientras que las clases pueden aparecer más rápidas para algunas otras (especialmente para objetos de más de 16 bytes). Además, algunos tipos de operaciones son esencialmente imposibles con las estructuras.
Los tipos de estructura mutable son útiles, al contrario de lo que afirman algunos detractores, pero hay algunas advertencias. Si uno tiene una variable que contiene una referencia a un objeto de clase mutable, y uno hace algo para cambiar ese objeto, ese cambio será efectivamente "visto" por todo lo que contiene una referencia a ese objeto. Si uno desea cambiar un objeto sin molestar a nada más, debe saber que uno tiene la única referencia a ese objeto. A menudo, la única forma de estar seguro de esto es copiar todos los datos del objeto en una nueva instancia de objeto y luego realizar el cambio a esa nueva instancia. Por el contrario, si uno tiene una estructura mutable, uno simplemente puede hacer los cambios que quiera sin tener que crear una nueva instancia.
El único problema real con las estructuras mutables es que .net usa varias abstracciones para hacer que se comporten como parte del sistema de tipo unificado, y estas abstracciones pueden hacer que se utilicen copias de estructuras en lugares donde los originales deberían usarse lógicamente . No siempre es obvio cuando estas sustituciones pueden ocurrir, y pueden conducir a un comportamiento confuso y erróneo.
Si no puede decidir, es casi seguro que es una "clase". Es increíblemente raro * legítimamente * escribir una estructura. –
Para los programadores turcos, tengo una publicación en el blog sobre ella http://sonergonul.net/2012/12/net-icerisinde-deger-tipi-ve-referans-tipi/ –