Я не знаю, если ранее кто-то спросил то же самое. Когда я попытался найти в сети, я не смог его найти. Пожалуйста, помогите мне в решении этого вопроса?Marshall.SizeOf сообщает о неожиданном размере массива структур в C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
[StructLayout(LayoutKind.Sequential)]
public class Details
{
public uint ID;
public uint state;
public uint country;
public uint place;
}
[StructLayout(LayoutKind.Sequential)]
public class UserDetails
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst=8)]
public Details[] userDetails;
}
static void Main(string[] args)
{
UserDetails u = new UserDetails();
int sizeofDetails = Marshal.SizeOf(u);
}
}
}
Когда я выполнил код, я ожидал, что sizeofDetails должно быть 128. Но я получаю 64.
Есть ли какие-либо проблемы в объявлении массива. Кто-то может помочь?
Уинт - 4 байта. – ForeverZer0
Но почему результат 64? SizeOf находится над UserDetails, содержащим массив деталей. – user2864740
извините за имена переменных .. На самом деле я получаю размер UserDetails. Что внутренне содержит массив размера 8. Каждый элемент в размере массива равен 16. Итак, я ожидаю 128-байтный размер. – chandrakanth