Qual è la differenza tra "int?" e 'int' in C #?


84

Sono sicuro al 90% di aver visto questa risposta su stackoverflow prima, infatti non avevo mai visto "int?" sintassi prima di vederlo qui, ma non importa come cerco non riesco a trovare il post precedente, e mi sta facendo impazzire.

È possibile che io abbia mangiato i funghi divertenti per sbaglio, ma se non lo sono, qualcuno può per favore indicare il post precedente se può trovarlo o spiegarlo nuovamente? Il mio stackoverflow search-fu è apparentemente troppo basso ....

Risposte:




24

int? è la stessa cosa di Nullable. Ti permette di avere valori "null" nel tuo int.


7

int appartiene a System.ValueType e non può avere null come valore. Quando si ha a che fare con database o altri tipi in cui gli elementi possono avere un valore nullo, potrebbe essere utile controllare se l'elemento è nullo. Questo è quando int? entra in gioco. int? è un tipo nullable che può avere valori compresi tra -2147483648 e 2147483648 e null.

Riferimento: https://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx


0

il simbolo ? dopo l'int significa che può essere annullabile.

Il ? Il simbolo viene solitamente utilizzato in situazioni in cui la variabile può accettare un valore nullo o intero o, in alternativa, restituire un numero intero o nullo.

Spero che il contesto di utilizzo aiuti. In questo modo non sei limitato a trattare esclusivamente con numeri interi.


0

puoi usarlo quando ti aspetti un valore nullo nel tuo numero intero, specialmente quando usi CASTING ex:

x= (int)y;

se y = null allora avrai un errore. devi usare:

x = (int?)y;

0

Int non può accettare null ma se lo sviluppatore utilizza int? quindi memorizzi null in int come int i = null; // non accettare int? i = null; // funziona principalmente per la paginazione in MVC Pagelist


Questo sembra dire la stessa dell'altra risposta.
JJJ
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.