这一类型在C#中叫做 “可空类型”;int?是一种类型,普通的int不能为null,而用int?,其值可以为null
int?或者Nullable
对于一个类型,如果既可以给它分配一个值,也可以给它分配 nullNothingnullptrnull 引用,我们就说这个类型是可空的。因此,可空类型可表示一个值,或表示不存在任何值。例如,类似 String 的引用类型就是可空类型,而类似 Int32 的值类型不是可空类型。由于值类型的容量只够表示适合于该类型的值,因此它不可为空;值类型没有表示空值所需的额外容量。
我的总结就是:
可空类型的基础类型可以是任何非可空值类型或任何具有struct约束的类型参数,但不能是可空类型或引用类型。例如:int?代表是可空的整形,而int??则是无效类型。即可空类型可以表示其基础类型的所有值和一个额外的空值。语法 T?是System.Nullable
具体实例可参考http://msdn.microsoft.com/zh-cn/library/2cf62fcy(VS.80).aspx
http://www.biye5u.com/article/Csharp/jichu/2010/2767.html
问题问的是变量加?不是变量类型加?以上都答得不对。
变量加?的意思是
if(变量!=null) 执行变量后面的操作
比如GameObject player;
player?.play();
意思是如果player不为null,则执行player.play();
int 和DateTime 是不能为null,String可以
所以后面加个?表示一种可支持null的类型
int ?a =null 可以
int a=null 不可以
int datetime都是值类型,不能为null
加了?以后就可以为null了
在C#中 int ? 带表的是可空类型