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 ....

cori
źródło

Odpowiedzi:

123

int? jest skrótem od Nullable<int>.

Może to być wpis, którego szukałeś.

Zapomniany średnik
źródło
24

int? to to samo, co Nullable. Pozwala mieć wartości „null” w int.

Charles Graham
źródło
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

Krishnaveni B.
źródło
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.

sanmatrix
źródło
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;
Mohammad Taher Assad
źródło
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

Fahad Jamal uddin
źródło
Wydaje się, że oznacza to to samo, co druga odpowiedź.
JJJ