Sto provando a controllare la dimensione di tutte le mie variabili (tipi di valore) utilizzando l'operatore sizeof. Ho passato attraverso uno dei msdn article dove è scritto chefornisce una dimensione extra di una struttura in C#
Per tutti gli altri tipi, tra le strutture, l'operatore sizeof può essere utilizzato solo in blocchi di codice non sicuri
e anche le strutture non deve contenere campi o proprietà che sono tipi di riferimento
Per questo, mi hanno permesso di compilazione non sicuro nelle mie proprietà del progetto e la struttura creata i seguenti-
struct EmployeeStruct
{
int empId;
long salary;
}
e usavano i seguenti-
unsafe
{
size = sizeof(EmployeeStruct);
}
Console.WriteLine("Size of type in bytes is: {0}", size);
Qui sto ottenendo uscita come formato di tipo in byte è: 16 però, cercando in struttura dovrebbe essere 12 (4 per int e 8 per lungo). Qualcuno può aiutarmi a capire qui perché sto ricevendo una dimensione extra di 4 byte?
Il link che hai indicato ti dice: "mentre sizeof restituisce la dimensione così come è stata allocata dal Common Language Runtime, ** includendo qualsiasi padding **" – DavidG
@EugenePodskal Cambia molto - le persone che cercano risposte a un problema su C# non riguarderà le domande su C, sono lingue molto diverse, anche se la risposta è la stessa. –
@GediminasMasaitis Quindi troveranno questa domanda e leggeranno il duplicato (beh, almeno dovrebbero). Ma se pensi che valga la pena, allora puoi scrivere una risposta specifica canonica specifica per C#. In tal caso, ti consigliamo anche di rinominare la domanda in "dimensione del valore restituito più grande del previsto" più facilmente ricercabile e al punto "lungo la linea. –