可能重复:
C# using the question mark after a type, for example: int? myVariable; what is this used for?
我看到?
运算符在很多地方使用过,并尝试使用Google和StackOverflow,但搜索引擎都将其从查询中排除,并且没有返回任何好的答案。
这个运营商的意义是什么?我通常在类型声明之后看到它:
int? x;
DateTime? t;
例如,int
的以下两个声明之间有什么区别:
int? x;
// AND
int x;
答案 0 :(得分:2)
答案 1 :(得分:2)
您可以阅读:Nullable type -- Why we need Nullable types in programming language ?
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
答案 2 :(得分:1)
它不是运营商,但int?
是Nullable<int>
的捷径。 Nullable<>
是允许设置一些值类型变量null值的容器。
答案 3 :(得分:1)
它呼叫nullable types
。
Nullable类型是System.Nullable结构的实例。可空的 type可以表示其基础值的正常值范围 类型,加上一个额外的空值。
int? x;
相当于
Nullable<int> x;
答案 4 :(得分: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.
答案 5 :(得分:0)
差异b / w int?和int是int?可以存储null但int不能。
INT?被称为可空运算符,它基本上在使用数据库实体时使用。
更多信息 - http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx
希望这会有所帮助!!
答案 6 :(得分:0)
该运算符使所有不可为空的对象可以为空。 所以这意味着你是否会声明一个变量int? x,它可以像这样分配: 诠释? x = null。如果没有?签名,你不能用空值赋值。