Tôi đang cố gắng kiểm tra kích thước của tất cả các biến (loại giá trị) của tôi bằng toán tử sizeof. Tôi trải qua một trong những msdn article nơi nó được viết rằngtoán tử sizeof cung cấp thêm kích thước của cấu trúc trong C#
Đối với các loại khác, kể cả cấu trúc, toán tử sizeof có thể chỉ được sử dụng trong các khối mã không an toàn
và cũng cấu trúc không nên chứa bất kỳ lĩnh vực hoặc tài sản mà nhiều loại tài liệu tham khảo
Đối với điều này, tôi kích hoạt tổng hợp không an toàn về tính chất dự án của tôi và cơ cấu tạo như sau-
struct EmployeeStruct
{
int empId;
long salary;
}
và sử dụng nó như sau-
unsafe
{
size = sizeof(EmployeeStruct);
}
Console.WriteLine("Size of type in bytes is: {0}", size);
Ở đây tôi nhận được đầu ra như Kích thước của loại theo byte là: 16 Tuy nhiên bằng cách nhìn vào cấu trúc nó nên là 12 (4 cho int và 8 trong thời gian dài). Ai đó có thể giúp tôi hiểu ở đây rằng tại sao tôi nhận được thêm 4 byte không?
Liên kết bạn đã cung cấp cho bạn: "trong khi sizeof trả về kích thước vì nó đã được phân bổ theo thời gian chạy ngôn ngữ chung **, bao gồm mọi phần đệm **" – DavidG
@EugenePodskal Nó thay đổi rất nhiều - những người đang tìm kiếm câu trả lời một vấn đề trên C# sẽ không xem xét các câu hỏi về C, chúng là các ngôn ngữ rất khác nhau, ngay cả khi câu trả lời là như nhau. –
@GediminasMasaitis Sau đó, họ sẽ tìm thấy câu hỏi này và đọc các bản sao (tốt, ít nhất là họ nên). Nhưng nếu bạn nghĩ rằng nó là giá trị nỗ lực, sau đó bạn có thể viết một câu trả lời C# -specific chính xác thích hợp. Trong trường hợp đó, tôi cũng khuyên bạn nên đổi tên câu hỏi thành giá trị "sizeof trả về giá trị lớn hơn" và có thể tìm kiếm dễ dàng hơn ". –