Compartir a través de


Los campos de tipos de valor deben ser trasladables

Actualización: noviembre 2007

     TypeName

ValueTypeFieldsShouldBePortable

Identificador de comprobación

CA1900

Category

Microsoft.Portability

Cambio problemático

Problemático: si se ve el campo fuera del ensamblado. No problemático: si no se ve el campo fuera del ensamblado.

Motivo

Esta regla comprueba que las estructuras declaradas con un diseño explícito se alinearán correctamente cuando se calculen las referencias al código no administrado en plataformas de 64 bits. IA-64 no permite accesos a memoria no alineada y el proceso se bloqueará si no se corrige esta infracción.

Descripción de la regla

Las estructuras con diseño explícito que contienen campos no alineados provocan bloqueos en las plataformas de 64 bits.

Cómo corregir infracciones

Todos los campos que tengan menos de 8 bytes deben tener posiciones de desplazamiento que sean múltiplo de su tamaño, y los campos de 8 bytes o más deben tener posiciones de desplazamiento que sean múltiplo de 8. Otra solución es utilizar LayoutKind.Sequential en lugar de LayoutKind.Explicit, siempre que sea razonable.

Cuándo suprimir advertencias

Únicamente se debe suprimir esta advertencia si se produce por un error.