i tiene una gran variedad de estructuras y necesito para obtener el tamaño de la misma en bytestamaño del conjunto de estructuras en bytes
en C++ que puedo hacerlo usando sizeof()
pero lo necesito C#
thnx
i tiene una gran variedad de estructuras y necesito para obtener el tamaño de la misma en bytestamaño del conjunto de estructuras en bytes
en C++ que puedo hacerlo usando sizeof()
pero lo necesito C#
thnx
Marshal.SizeOf(typeof(MyStruct)) * array.Length
No es el operador sizeof
. Sin embargo, solo puede usarse en un contexto inseguro.
También hay una diferencia en el método propuesto por Mehrdad, namingly:
Para todos los demás tipos, incluyendo estructuras, el operador sizeof se puede utilizar solamente en los bloques de código no seguros. Aunque puede usar el método Marshal.SizeOf, el valor devuelto por este método no siempre es el mismo que el valor devuelto por sizeof. Marshal.SizeOf devuelve el tamaño después de que el tipo se haya calculado, mientras que sizeof devuelve el tamaño tal como ha sido asignado por el tiempo de ejecución de lenguaje común, incluido cualquier relleno.
Ejemplo:
unsafe
{
int size = sizeof(MyStruct)*myArray.Length;
}
multiplicado por arr.Length? ;-) –
@Mario: Bien, corregido. ;) @Downvoter: ¿Fue ese el motivo? – Mehrdad
No lo tengo. Digamos que tengo 'público fijo Byte smthng [12];'. Si escribo, p. 'int a = smthng.Lenght;' desencadena un error de compilación. Ninguno de los dos funcionó 'sizeof()'. Entonces, ¿qué estoy haciendo mal? –