Warum int nicht null sein? Wie funktioniert nullable int (int?) die Arbeit in C#?
Ich bin neu in C# und nur gelernt, dass Objekte können null sein, in C# aber int
nicht.
Auch wie funktioniert nullable int (int?
) Arbeit in C#?
- Ich wäre investieren Sie in ein gutes Buch über C#. Sie sind gebunden, haben noch viele Fragen, die auf basic-syntax, wie dieses und Fragen Sie individuell an, SO würde eine Menge Zeit.
- stackoverflow.com/questions/6191339/...
- Ich sehe, dass verschloss sich wie eine betrogene die eine jleedev verbunden, aber diese Frage ist sehr viel spezifischer für C# mit nullable value types...
- ppl, die mehr daran interessiert sind, schließen Fragen und die Suche nach Duplikaten eher danach suchen, was ist gefragt und zu beantworten. Diese Frage ist nicht doppelt der alle markiert, aber die Leute haben immer noch markiert es doppelt, rest vereinbart und geschlossen. Ich denke, dass keiner von Ihnen blickte auf Frage einmal.
Du musst angemeldet sein, um einen Kommentar abzugeben.
int
ist ein primitiver Typ und nurReferenceType
s (Objekte) sind null-Werte zu. Sie können eineint
nullable durch das einwickeln von es in einem Objekt:-oder-
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/nullable-types/using-nullable-types
int?
langsamer alsint
ist? Hat es mehr Arbeitsspeicher verwenden?Einem int ein Werttyp ist. Es ist wirklich von Typ Int32. Objekte können null-Werte zulassen, sind Referenztypen. Auf einer grundlegenden Ebene, der Unterschied ist, dass Sie einen Wert eingeben, wird speichern Sie den Wert mit der variable, wo eine Referenz-Datentyp speichert eine Referenz auf den Wert. Eine Referenz kann null sein, was bedeutet, dass es nicht auf den Wert. Denen ein Wert, der Typ hat immer einen Wert.
Null-Werte zulässt, wickelt einen Wert geben, damit Sie die Möglichkeit haben, null. Mit int? ist nur ein compiler Verknüpfung zu deklarieren Sie eine nullable-Typ.
Können Sie eine nullable int durch Verwendung von int? oder
Nullable<int>
beide sind genau die gleiche Sache.Wert-Typen wie
int
enthalten direkte Werte eher als Hinweise, wieReferenceType
. Ein Wert darf nicht null sein, sondern eine Referenz kann null sein, das heißt, es verweist auf nichts. Ein Wert kann nicht nichts in ihm. Ein Wert enthalten immer irgendeine Art von WertNull-Werte zulässt oder Nullable-Typen sind spezielle Wert-Typen, die zusätzlich zu den normalen Werten von Wert-Typen unterstützen auch zusätzliche null-Wert, genau wie Referenztypen
Objekte sind Referenztypen, und Sie können auf nichts oder NULL, aber int ist ein Wertetyp, die nur einen Wert, und kann nicht auf alles.
Primitiven Typ int nicht Ausdrücken können, null in seine binäre Darstellung, aber
Nullable<int>
eine zusätzliche byte express, die null Informationen von diesem Wert.hasValue
auf die Struktur-definition zu äußern null int, zudem ist die CLR, die überarbeitet werden müssen, ein wenig zu viel mit dieser speziellen Struktur beim Vergleich mit null. Die primitiven int könnte nicht repräsentieren null, da alle binären Permutationen darstellen Wert von int, in dem Zustand, es hat 4 bytes im stack.