This MSDN reference scheint darauf hinzuweisen, dass, wenn ein int?
(oder ein Nullable<T>
) einen Wert hat, ist es immer boxed (und daher eine viel weniger effiziente Speicherung von Daten, Speicher-weise als ein int
). Ist das der Fall?sind C# int? und bool? s immer boxed wenn hasvalue = true?
Antwort
Diese Seite bezieht sich auf, wenn Sie die Struktur Nullable<T>
boxen, nicht die Werte innerhalb der Struktur selbst.
Es gibt keine Boxen in Speichern eines Nullable Types beteiligt, bis Sie Boxen die NULL-Werte zulassen versuchen selbst:
int? a = 42; // no boxing
int? n = null; // no boxing
object nObj = n; // no boxing
object aObj = a; // only now will boxing occur
Dieses Verhalten ist nicht anders als bei Verwendung einer normalen Werttyp Boxen (mit Ausnahme der Null-Sachbearbeitung) so ist es wirklich zu erwarten.
Das ist nicht der Fall. Nullable<T>
ist generisch, so dass es die echte int
oder bool
enthält.
Die MSDN-Seite spricht darüber, was passiert, wenn Sie eine Nullable<int>
oder Nullable<bool>
Box. Wenn Sie Ihre Nullable-Struktur niemals einer object
-Variablen zuweisen, entsteht kein Boxing-Overhead.
Nein. Das Nullable-Objekt ist eine generische Struktur und verarbeitet intern den Wert von T ohne Boxing.
- 1. Casting Int zu Bool in C/C++
- 2. C# HasValue vs! = Null
- 3. Typ "Int -> Bool", "Int-> Bool -> Int", "Int-> String -> Int-> Bool"
- 4. Bool immer als wahr
- 5. Nullable Typ und .HasValue wirft immer noch eine Null-Ausnahme
- 6. Entity Framework C# konvertieren Int in Bool
- 7. Boxed Primitives und Equivalence
- 8. Wird der Parameter int ref get boxed?
- 9. Warum funktioniert der Komplement-Operator nicht, wenn bool = true ist?
- 10. c Programm einen Int einem Bool zuweisen?
- 11. HasValue und Wert
- 12. C++ Casting Bool zu Int - Standard
- 13. Bool und C/C++ - Interoperabilität
- 14. PowerShell obligatorisch Bool immer wahr
- 15. Disassemblierung für - (BOOL) f {return true; }
- 16. Sollte ich "int" oder "bool" als Rückgabewert in C++ verwenden?
- 17. C++ 's entspricht C#' s Wörterbuch und Liste
- 18. Cast boxed struct zu boxed pointer - golang
- 19. C++ Trigger-Funktion, wenn Bool ändert
- 20. Warum ist ein C++ bool var standardmäßig true?
- 21. Warum geben Boost-Bibliotheken Dinge zurück, die "in bool" umwandelbar sind und nicht nur "bool`s" zurückgeben?
- 22. Ist (bool | bool) sicher?
- 23. printDialog.PrinterSettings.IsValid gibt immer true zurück
- 24. Bool-Spalte abfragen gibt immer false zurück
- 25. Wenn oder switch-Anweisung mit Zeichenfolge und Bool C#
- 26. was "s" und "e" in C# Code-Syntax sind
- 27. Binding Int-Eigenschaft zu Bool UIElement
- 28. quickCheckAll gibt immer "True" zurück
- 29. C# und Thread-Sicherheit eines bool
- 30. C# Rangierung Bool