C#中“int?”和“int”有什么区别?

96
我大约有90%的把握曾在Stack Overflow看到过这个答案,事实上,在我看到它之前,我从未见过“int?”这样的语法,但无论我如何搜索,都找不到以前的帖子,这让我疯狂。
可能是我误食了一些有趣的蘑菇,但如果我没有的话,能否请有人找到先前的帖子或重新解释一下?我的StackOverflow搜索技能显然太低了...
7个回答

134

int?Nullable<int>的简写。

这个可能是你要找的帖子。


33

24

int? 和 Nullable 是同一件事情。它允许您在 int 中拥有“null”值。


7
int 属于 System.ValueType 类型,不能为 null。在处理数据库或其他类型的元素可能具有 null 值的情况下,检查元素是否为 null 可能很有用。这就是 int? 的作用。int? 是可空类型,其值可以从 -2147483648 到 2147483648 和 null。
参考资料:https://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx

1

Int不能接受null,但如果开发人员使用int?,那么可以将null存储在int中。例如: int i = null; // 不被接受 int? i = null; // 可以工作 在MVC Pagelist中主要用于分页。


这似乎与另一个答案说的一样。 - JJJ

1

在int后面加上?符号表示它可以为null。

?符号通常用于变量可以接受null或整数的情况,或者可以返回整数或null的情况。

希望上下文的使用可以帮助理解。这样你就不仅局限于处理整数了。


0

当您在整数中期望空值时,特别是在使用CASTING时,可以使用它

x= (int)y;

如果 y 为 null,则会出现错误。 你必须使用:

x = (int?)y;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接