Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

302
Vistas
Ejemplos de tipos inmutables en .Net

Conocemos el concepto de inmutabilidad, pero necesitamos conocer algunos tipos inmutables además de

  • Cuerda
  • Fecha y hora

¿Hay más?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

A continuación se incluye una lista de tipos inmutables en la biblioteca de clases del marco. (¡Siéntete libre de expandirlo!)

System.…

  • Todos los tipos de valores primitivos: (Nota: ¡ no todos los tipos de valores son inmutables !)
    • Byte y SByte
    • Int16 y UInt16
    • Int32 y UInt32
    • Int64 y UInt64
    • IntPtr
    • Single
    • Double
  • Decimal
  • Todos los tipos anónimos creados por el compilador ( new { ... } en C#, New With { ... } en VB.NET) (incorrecto por dos razones: estos tipos no están en FCL y, aparentemente, los tipos de VB.NET están mudable.)
  • Todos los tipos de enumeración ( enum , Enum )
  • Todos los tipos de delegados. (vea esta respuesta . Si bien puede parecer que los delegados son mutables (ya que puede hacer cosas como obj.PropertyChanged += callback , en realidad es la referencia obj.PropertyChanged la que se muta para apuntar a una instancia de delegado recién construida; la instancia de delegado original permanece sin cambios.)
  • DateTime , TimeSpan (mencionado en esta respuesta ) y DateTimeOffset
  • DBNull
  • Guid
  • Nullable<T>
  • String
  • Los tipos Tuple<…> introducidos con .NET 4 (mencionados en esta respuesta )
  • Uri
  • Version
  • Void

System.Linq.…

  • Lookup<TKey, TElement>
over 4 years ago · Santiago Trujillo Denunciar

0

No estoy seguro de si está buscando tipos públicamente inmutables en .NET o tipos totalmente inmutables. Además, ¿quiere ocuparse solo de los tipos públicos en .NET? El problema más profundo es definir qué forma la inmutabilidad. ¿Una clase que solo tiene

 public readonly int[] Numbers;

lo hace inmutable? Los Números en sí no se pueden cambiar, pero su contenido sí. Entiendes la idea.

De todos modos, podría inspeccionarse a sí mismo programáticamente . Para verificaciones anidadas más profundas, necesitará recursividad (que no haré aquí)

Cargue todos los ensamblajes que desee verificar y haga algo como (no probado)

 var immutables = AppDomain.CurrentDomain .GetAssemblies() .SelectMany(t => t.GetTypes()) .Where(t => t .GetProperties(your binding flags depending on your definition) .All(p => !p.CanWrite) && t .GetFields(your binding flags depending on your definition) .All(f => f.IsInitOnly) .ToList();

Incluso esto no será suficiente para encontrar la inmutabilidad de los tipos de colección. Algunos de los tipos de colecciones inmutables (aunque no forman parte del núcleo .NET predeterminado) se pueden encontrar aquí: Colecciones inmutables


Algunos inmutables notables:

  • algunos tipos de clase como String , Tuple , tipos anónimos
  • la mayoría de las estructuras (excepciones notables incluyen la mayoría de los enumeradores)
  • enumeraciones
  • delegados
  • tipos de colección inmutables como

    ImmutableArray (versión preliminar)

    Diccionario inmutable

    ImmutableOrdenadoDiccionario

    ImmutableHashSet

    Lista inmutable

    InmutableQueue

    ImmutableSortedSet

    Pila inmutable

over 4 years ago · Santiago Trujillo Denunciar

0

TimeSpan , o familia tipográfica moderna Tuple . Tuple es inmutable porque se implementó para admitir lenguajes funcionales (F # fe) en .NET.

Por supuesto, puede hacer que sus propias clases y estructuras sean mutables o inmutables, como desee. Los tipos inmutables (también conocidos como objetos de valor) son útiles en la programación de subprocesos múltiples, la programación funcional, para borrar un código.

Para hacer que una clase o estructura sea inmutable, simplemente elimine todos los configuradores públicos/protegidos/internos; y declarar mejor todos los campos con la palabra clave de readonly .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda