Obsah:
Definícia - Čo znamená operátor Sizeof?
Operátor Sizeof v C # je operátor používaný na určenie veľkosti (v bajtoch) nespravovaného typu, ktorý nie je referenčným typom.
Pri vývoji aplikácií, ktoré zahŕňajú dynamické prideľovanie pamäte, je veľmi bežné nájsť pamäť pridelenú určitému typu. Je veľmi nebezpečné predpokladať veľkosť typu a použiť pevne kódovanú hodnotu v aplikácii, pretože pri prenose do rôznych systémov môže dôjsť k narušeniu aplikácie. Veľkosť operátora sa v takýchto prípadoch používa na nájdenie veľkosti zloženého dátového typu, ako je napríklad struct. Môže sa však použiť iba na výpočet veľkosti bajtov typov hodnôt a nie pre referenčné typy kvôli virtualizovanému systému rozloženia typov rámca .NET.
Operátor sizeof pomáha pri alokácii pamäte pre dátové štruktúry, ktoré sa prenášajú zo spravovanej aplikácie na nespravovaný kód, ako je Interop, užívateľská serializácia atď. Operátori zvyšovania a znižovania, ktoré pracujú na ukazovateľoch, interne používajú operátora sizeof na zvyšovanie alebo znižovanie obsiahnutej adresy. v premennej ukazovateľa hodnotou rovnajúcou sa počtu bajtov obsadených typom ukazovateľa. Veľkosť operátora pomáha zlepšiť čitateľnosť kódu.
Techopedia vysvetľuje veľkosť operátora
Operátor sizeof je unárny operátor, ktorý preberá parameter singe a používa sa s kľúčovým slovom "sizeof". Na rozdiel od C ++ je operátor sizeof konštrukciou kompilácie, takže parameter musí byť uzavretý typ známy počas kompilácie, nie premenné. Parameter môže byť tiež enum, ukazovateľ alebo užívateľom definovaná štruktúra bez akýchkoľvek vlastností poľa alebo typu odkazu. Pre určité preddefinované typy vráti operátor sizeof konštantnú hodnotu, zatiaľ čo jeho použitie so zostávajúcimi typmi vedie k hodnotám založeným na implementácii.
Napríklad, keď je operátor sizeof spustený s celým číslom (int) ako parametrom, vždy vráti číslo štyri, čo naznačuje, že premenná typu integer zaberá štyri bajty pamäte.
Keď je operátor sizeof aplikovaný na operand typu struct, vyvolá celkový počet bajtov obsadených štruktúrou, ktorá obsahuje výplňové bajty použité na jej vnútorné zarovnanie. Pri používaní operátora sizeof s struct obsahujú tieto pokyny:- Mal by sa nazývať v nebezpečnom bloku
- Premenná struct nesmie obsahovať člena referenčného typu
- Štruktúra nesmie byť všeobecným typom hodnoty