C# 语法问题 [重复]

C# syntax question [duplicate]

提问人:Luchian Grigore 提问时间:9/6/2011 最后编辑:CommunityLuchian Grigore 更新时间:9/6/2011 访问量:129

问:

这个问题在这里已经有答案了:
12年前关闭。

可能的重复项:
?C# 中的 (nullable) 运算符

什么 ?像这样使用:

class Test
{
    public int? aux;
}

对于更熟悉 c# 的人来说,这可能是一个简单的问题,但我真的不知道要搜索什么。我读了一个解释,但没有完全理解它。我也有兴趣知道“??”运算符是做什么的。一些关于它们在哪些方面有用的例子将有很大帮助。

C# 语法

评论

1赞 leppie 9/6/2011
至于,StackOverflow 上有几个关于它的问题。??
1赞 Luchian Grigore 9/6/2011
我确实意识到有很多可能的重复项,但我无法真正搜索它。寻找可为空当然是可行的,只是我不知道它被称为可为空运算符。

答:

5赞 leppie 9/6/2011 #1

此 () 是 的简写。int?Nullable<int>

评论

0赞 Luchian Grigore 9/6/2011
您能举例说明应该在何处以及为什么使用它吗?
0赞 Zenwalker 9/6/2011
@Luchian 当您想将 null 存储为 int 数据类型时,会使用 Grigore Nullables。默认情况下,不能将 null 存储在不可为 null 的 valuetypes 中。比如说,你在整数集合中搜索,如果你找不到任何东西,那么只需返回 null 表示什么也没找到。或者某些第三方 API 以 int 类型返回 null。
1赞 Marco 9/6/2011 #2

int?表示可为空的整数:aux 可以有 int 值或为 null!!

3赞 Adeel 9/6/2011 #3

它可以是任何 int 值加上一个额外的 null。查看更多信息 可以为 null 的类型

使用 Nullable int 的目的是,虽然经常使用数据库操作,但在某些情况下,某些值可能是 null,我们必须在代码中表达。例如,考虑以下架构

Employee

 - id,  bigint, not null
 - name,  nvarchar(100), null
 - locationId,  bigint, null

假设 employee 的 locationId 不可用,因此在数据库中 employee 的 locationid 值为 NULL。在 C# 方面,您知道不能有 NULL 值,因此添加了 type、Nullable int(和其他一些值),因此我们可以很容易地显示 locationId 没有值。int

评论

0赞 Luchian Grigore 9/6/2011
您能举例说明应该在何处以及为什么使用它吗?
2赞 Ovidiu Pacurar 9/6/2011 #4

“?” 表示可为 null 的类型

1赞 Francesco Baruchelli 9/6/2011 #5

正如许多其他人已经回答的那样,?表示可为 null 的类型。这意味着 int?除了整数值之外,还可以为 null 赋值。
当您想要区分尚未初始化的变量的大小写和已为其分配默认值的情况时,可以使用此选项。
例如,您可以考虑 bool 的情况。声明 bool 变量时,默认情况下该变量具有 false 值。这意味着,当它的值为 false 时,你无法判断这种情况的发生是因为有人为变量分配了该值,还是因为没有人碰过它。在这种情况下,布尔?很有用,因为它允许您将“真实”假值(由某些代码显式分配)与未初始化的情况区分开来。