Πίνακας περιεχομένων:
Ορισμός - Τι σημαίνει Μέγεθος Φορέα Λειτουργίας;
Ο τελεστής μεγέθους, στον C #, είναι ένας χειριστής που χρησιμοποιείται για τον προσδιορισμό του μεγέθους (σε bytes) ενός μη διαχειριζόμενου τύπου που δεν είναι τύπος αναφοράς.
Κατά την ανάπτυξη εφαρμογών που περιλαμβάνουν δυναμική κατανομή μνήμης, είναι πολύ συνηθισμένη η εύρεση της μνήμης που διατίθεται σε έναν τύπο. Είναι πολύ ανασφαλές να υποθέσουμε το μέγεθος ενός τύπου και να χρησιμοποιήσουμε την σκληρά κωδικοποιημένη τιμή στην εφαρμογή, καθώς αυτό μπορεί να σπάσει την εφαρμογή όταν μεταφέρεται σε διαφορετικά συστήματα. Ο χρήστης sizeof χρησιμοποιείται σε τέτοιες περιπτώσεις για να βρει το μέγεθος ενός σύνθετου τύπου δεδομένων όπως ένα struct. Ωστόσο, μπορεί να χρησιμοποιηθεί μόνο για τον υπολογισμό του μεγέθους byte των τύπων τιμών και όχι για τους τύπους αναφοράς, λόγω του συστήματος εικονικοποιημένου διαστήματος σχεδίασης του πλαισίου .NET.
Ο φορέας sizeof βοηθά στην κατανομή μνήμης για δομές δεδομένων που περνούν έξω από την διαχειριζόμενη εφαρμογή σε μη διαχειριζόμενο κώδικα όπως Interop, προσαρμοσμένη σειριοποίηση κλπ. Οι χειριστές αυξήσεων και μειώσεων που λειτουργούν με δείκτες χρησιμοποιούν εσωτερικά το μέγεθος του χειριστή για να αυξήσουν ή να μειώσουν τη διεύθυνση που περιέχει σε μια μεταβλητή δείκτη με μια τιμή ίση με τον αριθμό των byte που καταλαμβάνει ο τύπος του δείκτη. Ο χειριστής μεγέθους βοηθά στη βελτίωση της αναγνωσιμότητας του κώδικα.
Η Techopedia εξηγεί τον Sizeof Operator
Ο φορέας sizeof είναι ένας unary χειριστής που λαμβάνει μια παράμετρο singe και χρησιμοποιείται με τη λέξη-κλειδί "sizeof". Σε αντίθεση με τη C ++, ο φορέας sizeof είναι ένα κατασκεύασμα χρόνου κατανομής, οπότε η παράμετρος πρέπει να είναι ένας κλειστός τύπος γνωστός κατά τη διάρκεια της σύνταξης, όχι μεταβλητές. Η παράμετρος μπορεί επίσης να είναι ένα enum, ένας δείκτης ή μια δομή που ορίζει ο χρήστης χωρίς ιδιότητες τύπου πεδίου ή αναφοράς. Για ορισμένους προκαθορισμένους τύπους, ο φορέας sizeof επιστρέφει μια σταθερή τιμή, ενώ η χρήση του με τους υπόλοιπους τύπους οδηγεί σε τιμές που βασίζονται στην εφαρμογή.
Για παράδειγμα, όταν ο φορέας sizeof εκτελείται με integer (int) ως παράμετρος, επιστρέφει πάντα τον αριθμό τέσσερα για να υποδείξει ότι μια μεταβλητή τύπου ακέραιου αριθμούσε τέσσερα bytes μνήμης.
Όταν ο φορέας sizeof εφαρμόζεται σε έναν operand τύπου δομής, ανακτά τον συνολικό αριθμό byte που κατέχει μια δομή, η οποία περιλαμβάνει τα bytes padding που χρησιμοποιούνται για την εσωτερική ευθυγράμμιση. Οι κατευθυντήριες γραμμές που ακολουθούνται κατά τη χρήση του μεγέθους operator με struct περιλαμβάνουν:- Θα πρέπει να καλείται σε ένα μη ασφαλές μπλοκ
- Η μεταβλητή struct δεν πρέπει να περιέχει ένα μέλος αναφοράς τύπου
- Το struct δεν πρέπει να είναι ένας τύπος γενικής αξίας
