Από την άποψη του πώς αποθηκεύεται η μεταβλητή στη μνήμη RAM, ποια είναι η διαφορά μεταξύ του "int; X = 0" και "int? X = null";


Απάντηση 1:

Ο μηδενικός τύπος θα έχει κάποιο είδος επιπλέον πεδίου που υποδεικνύει αν η τιμή είναι έγκυρη. Φαίνεται ότι το παράδειγμά σας είναι στο C #. Σε αυτή την περίπτωση, int; είναι συντομογραφία για System.Nullable . System.Nullable είναι ένας γενικός τύπος που τυλίγει έναν Τ με ένα πεδίο extra bool, HasValue. Αυτό το πεδίο extra bool θα αποθηκευτεί στη μνήμη μαζί με το χώρο αποθήκευσης για το T. Η πρόσθετη σύνταξη στο C # για τύπους μηδενικής τιμής αποκρύπτει τις υποκείμενες ενέργειες που χρησιμοποιούν το πεδίο.

Εννοιολογικά, ο κώδικας μοιάζει με αυτό:

int; x = 0; // μεταφράζεται σε
x.Value = 0;
x.HasValue = true;

int; x = null; // μεταφράστε σε
x.HasValue = false;

Σε οποιαδήποτε περίπτωση όπου όλα τα πρότυπα δυαδικών ψηφίων ενός τύπου τιμής είναι έγκυρα, π.χ., ακέραιοι, η γλώσσα θα πρέπει να προσθέσει κάποιο είδος επιπλέον πεδίου ή δείκτη για να δείξει εάν υπάρχει μια έγκυρη τιμή ή αν η μεταβλητή πρέπει να θεωρηθεί μηδενική. Θεωρητικά, αν ο μεταγλωττιστής γνώριζε ότι ορισμένα μοτίβα δυαδικών ψηφίων δεν ήταν έγκυρες τιμές, θα μπορούσε να χρησιμοποιήσει ένα από τα μη έγκυρα μοτίβα για να υποδείξει μηδενική τιμή και να μην χρησιμοποιήσει επιπλέον αποθηκευτικό χώρο. Στην πράξη, όμως, αυτό είναι πιθανό να είναι αδύνατο, ώστε να βλέπετε πάντα κάποιο είδος επιπλέον μνήμης που χρησιμοποιείται.

Nullable Struct (Σύστημα)


Απάντηση 2:

Εξαρτάται τελείως από τον τρόπο με τον οποίο υλοποιείται η γλώσσα προγραμματισμού. Η ίδια γλώσσα μπορεί να εφαρμοστεί με πολλούς διαφορετικούς τρόπους, ανάλογα με το υλικό και τους συγκεκριμένους μεταγλωττιστές.

Τούτου λεχθέντος, σε πολλές γλώσσες, η μεταβλητή προσδιορίζει μια συγκεκριμένη θέση μνήμης όπου αποθηκεύονται τα πραγματικά δεδομένα. εάν η μεταβλητή έχει τιμή, ακόμη και μηδέν, η θέση θα οριστεί. Αν είναι μηδενική, η ίδια η τοποθεσία θα οριστεί σε μια άσκοπη τιμή, μηδέν ή διαφορετικά.


Απάντηση 3:

Εξαρτάται τελείως από τον τρόπο με τον οποίο υλοποιείται η γλώσσα προγραμματισμού. Η ίδια γλώσσα μπορεί να εφαρμοστεί με πολλούς διαφορετικούς τρόπους, ανάλογα με το υλικό και τους συγκεκριμένους μεταγλωττιστές.

Τούτου λεχθέντος, σε πολλές γλώσσες, η μεταβλητή προσδιορίζει μια συγκεκριμένη θέση μνήμης όπου αποθηκεύονται τα πραγματικά δεδομένα. εάν η μεταβλητή έχει τιμή, ακόμη και μηδέν, η θέση θα οριστεί. Αν είναι μηδενική, η ίδια η τοποθεσία θα οριστεί σε μια άσκοπη τιμή, μηδέν ή διαφορετικά.


Απάντηση 4:

Εξαρτάται τελείως από τον τρόπο με τον οποίο υλοποιείται η γλώσσα προγραμματισμού. Η ίδια γλώσσα μπορεί να εφαρμοστεί με πολλούς διαφορετικούς τρόπους, ανάλογα με το υλικό και τους συγκεκριμένους μεταγλωττιστές.

Τούτου λεχθέντος, σε πολλές γλώσσες, η μεταβλητή προσδιορίζει μια συγκεκριμένη θέση μνήμης όπου αποθηκεύονται τα πραγματικά δεδομένα. εάν η μεταβλητή έχει τιμή, ακόμη και μηδέν, η θέση θα οριστεί. Αν είναι μηδενική, η ίδια η τοποθεσία θα οριστεί σε μια άσκοπη τιμή, μηδέν ή διαφορετικά.


Απάντηση 5:

Εξαρτάται τελείως από τον τρόπο με τον οποίο υλοποιείται η γλώσσα προγραμματισμού. Η ίδια γλώσσα μπορεί να εφαρμοστεί με πολλούς διαφορετικούς τρόπους, ανάλογα με το υλικό και τους συγκεκριμένους μεταγλωττιστές.

Τούτου λεχθέντος, σε πολλές γλώσσες, η μεταβλητή προσδιορίζει μια συγκεκριμένη θέση μνήμης όπου αποθηκεύονται τα πραγματικά δεδομένα. εάν η μεταβλητή έχει τιμή, ακόμη και μηδέν, η θέση θα οριστεί. Αν είναι μηδενική, η ίδια η τοποθεσία θα οριστεί σε μια άσκοπη τιμή, μηδέν ή διαφορετικά.