1

可能重复:
C# 在类型后使用问号,例如:int? 我的变量;这是做什么用的?

我看到该?运算符在很多地方都使用过,并尝试使用 Google 和 StackOverflow 对其进行搜索,但两个搜索引擎都将其从查询中排除,并且没有返回任何好的答案。

这个运算符的含义是什么?我通常在类型声明之后看到它,例如:

int? x;
DateTime? t;

int例如,以下两个声明有什么区别:

int? x;
// AND
int x;
4

7 回答 7

2

此运算符不是运算符,而只是Nullable 类型的语法糖:

int? x;

是相同的

Nullable<int> x;
于 2013-01-28T11:41:19.027 回答
2

您可以阅读以下内容:Nullable 类型 - 为什么我们在编程语言中需要 Nullable 类型?

int? x;//this defines nullable int x
x=null; //this is possible
// AND
int x; // this defines int variable
x=null;//this is not possible
于 2013-01-28T11:43:06.467 回答
1

它不是运算符,int?而是Nullable<int>. Nullable<>是允许设置一些值类型变量空值的容器。

于 2013-01-28T11:41:28.473 回答
1

它叫nullable types

Nullable 类型是 System.Nullable 结构的实例。可空类型可以表示其基础值类型的正常值范围,外加一个额外的空值。

int? x;

相当于

Nullable<int> x;
于 2013-01-28T11:42:01.257 回答
1

?运算符指示类型可以为空。例如;

int? x = null; //works properly since x is nullable

int x = null; //NOT possible since x is NOT nullable

请注意,您访问变量值的方式会发生变化;

int? x = null; 
int y = 0;
if (x.HasValue)
{
    y = x.Value; // OK
}

y = x; //not possible since there is no direct conversion between types.
于 2013-01-28T11:42:12.583 回答
0

黑白差异?和 int 是 int 吗?可以存储 null 但 int 不能。

诠释?被称为可空运算符,它基本上在处理数据库实体时使用。

更多信息 - http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx

希望这可以帮助 !!

于 2013-01-28T11:43:12.583 回答
0

该运算符使所有不可为空的对象都可以为空。所以这意味着如果你将声明一个变量int?x,它可以这样分配: int? x = 空。如果没有?符号,您不能为其分配空值。

于 2013-01-28T11:43:15.467 回答