Próbuję sprawdzić rozmiar wszystkich moich zmiennych (typów wartości) za pomocą operatora sizeof. I przeszedł jeden z msdn article gdzie jest napisane, żeoperator sizeof daje dodatkowy rozmiar struktury w C#
Dla wszystkich innych typów, w tym elemencie, operator sizeof mogą być wykorzystane tylko w niebezpiecznych bloków kodu
a także kodowanym nie powinny zawierać pola lub właściwości, które są typy referencyjne
Do tego mam włączony niebezpieczny kompilację w moich właściwości projektu i stworzył strukturę następujące znaczenie:
struct EmployeeStruct
{
int empId;
long salary;
}
i wykorzystał je następujące znaczenie:
unsafe
{
size = sizeof(EmployeeStruct);
}
Console.WriteLine("Size of type in bytes is: {0}", size);
Tutaj jestem coraz wyjścia jak rozmiar w bajtach typu jest: 16 jednak patrząc na strukturę powinno być 12 (4 i 8 do int na długo). Czy ktoś może mi pomóc zrozumieć, dlaczego otrzymuję 4-bajtowy dodatkowy rozmiar?
Podany link mówi: "while sizeof zwraca rozmiar, ponieważ został przydzielony przez wspólne środowisko uruchomieniowe języka, ** w tym wszelkie dopełnienie **" – DavidG
@EugenePodskal To dużo zmienia - ludzie, którzy szukają odpowiedzi problem na C# nie będzie wyglądać na pytania o C, są bardzo różne języki, nawet jeśli odpowiedź jest taka sama. –
@GediminasMasaitis Następnie znajdą to pytanie i przeczytają duplikat (cóż, przynajmniej powinni). Ale jeśli uważasz, że to jest warte wysiłku, możesz napisać właściwą kanoniczną odpowiedź C#. W takim przypadku zaleciłbym również zmianę nazwy pytania na łatwiejszy do wyszukania i do punktu "sizeof zwraca wartość większą niż oczekiwana" lub coś podobnego do tej linii. –