Jaka jest różnica między „int?” i „int” w C #?


84

Jestem w 90% pewien, że widziałem tę odpowiedź wcześniej na stackoverflow, w rzeczywistości nigdy nie widziałem "int?" przed wyświetleniem go tutaj, ale bez względu na to, jak szukam, nie mogę znaleźć poprzedniego wpisu i doprowadza mnie to do szału.

Możliwe, że zjadłem śmieszne grzyby przez przypadek, ale jeśli nie, czy ktoś może wskazać poprzedni post, jeśli może go znaleźć lub ponownie wyjaśnić? Mój stackoverflow search-fu jest najwyraźniej za niski ....

Odpowiedzi:





7

int należy do System.ValueType i nie może mieć wartości null. W przypadku baz danych lub innych typów, w których elementy mogą mieć wartość null, przydatne może być sprawdzenie, czy element jest pusty. To wtedy int? wchodzi w grę. int? jest typem dopuszczającym wartość null, który może mieć wartości z zakresu od -2147483648 do 2147483648 i null.

Źródła: https://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx


0

symbol ? po int oznacza, że ​​może mieć wartość null.

The? symbol jest zwykle używany w sytuacjach, w których zmienna może akceptować wartość null lub liczbę całkowitą albo, alternatywnie, zwracać liczbę całkowitą lub zero.

Mam nadzieję, że kontekst użycia pomoże. W ten sposób nie jesteś ograniczony wyłącznie do obsługi liczb całkowitych.


0

możesz go użyć, gdy spodziewasz się wartości null w swojej liczbie całkowitej, zwłaszcza gdy używasz RZUCANIA np .:

x= (int)y;

jeśli y = null, wystąpi błąd. musisz użyć:

x = (int?)y;

0

Int nie może zaakceptować null, ale jeśli deweloper używa int? wtedy przechowujesz null w int jak int i = null; // nie akceptujesz int? i = null; // jego działa głównie do paginacji w MVC Pagelist


Wydaje się, że oznacza to to samo, co druga odpowiedź.
JJJ
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.