it-swarm-eu.dev

Jaký je rozdíl mezi 'int?' a 'int' v C #?

Jsem 90% jistý, že jsem viděl tuto odpověď na stackoverflow předtím, ve skutečnosti jsem nikdy neviděl "int?" syntaxe před tím, než ji uvidím, ale bez ohledu na to, jak vyhledávám, nemůžu najít předchozí příspěvek, a to mě šílí.

Je možné, že jsem náhodou jedl legrační houby, ale pokud nejsem, může někdo prosím upozornit na předchozí příspěvek, pokud ho najdou nebo to znovu vysvětlí? Moje hledání stack-flow-fu je zřejmě příliš nízké.

71
cori

int? je zkratka pro Nullable<int>.

Toto může být místo, které jste hledali.

105
29
KyleLanser

int? je to samé jako Nullable. To vám umožní mít "null" hodnoty ve vašem int.

22
Charles Graham

int patří System.ValueType a nemůže mít hodnotu null jako hodnotu. Při práci s databázemi nebo jinými typy, kde prvky mohou mít hodnotu null, může být užitečné zkontrolovat, zda je prvek null. To je, když int? přichází do hry. int? je nulovatelný typ, který může mít hodnoty v rozmezí -2147483648 až 2147483648 a null.

Odkaz: https://msdn.Microsoft.com/en-us/library/1t3y8s4s.aspx

6
Krishnaveni B

symbol ? po int znamená, že může být nulovatelný. 

? symbol je obvykle používán v situacích, kdy proměnná může přijmout nulu nebo celé číslo nebo alternativně vrátit celé číslo nebo null. 

Doufám, že kontext používání pomáhá. Tímto způsobem nejste omezeni pouze na jednání s celými čísly. 

0
sanmatrix

Int nemůže přijmout null, ale pokud vývojář používá int? pak uložíte null do int jako int i = null; // nepřijímat int? i = null;/jeho práce většinou používá pro stránkování v MVC Pagelist

0

můžete jej použít, když očekáváte hodnotu null ve svém čísle, zejména když používáte funkci CASTING ex:

x= (int)y;

pokud y = null, pak budete mít chybu. musíte použít: 

x = (int?)y;
0