通常,问号主要用于条件句x ?“yes”:“no”。
但我看到过它的另一种用法,但找不到解释?例如,操作员。
public int? myProperty
{
get;
set;
}
通常,问号主要用于条件句x ?“yes”:“no”。
但我看到过它的另一种用法,但找不到解释?例如,操作员。
public int? myProperty
{
get;
set;
}
当前回答
它是Nullable<int>的缩写。Nullable<T>用于允许将值类型设置为null。值类型通常不能为空。
其他回答
表示用(int?)声明的变量是可空的
int i1=1; //ok
int i2=null; //not ok
int? i3=1; //ok
int? i4=null; //ok
它是Nullable<int>的缩写。Nullable<T>用于允许将值类型设置为null。值类型通常不能为空。
再加上其他答案:
从c# 8.0开始,Nullable<>和?并不总是可以互换的。Nullable<>仅适用于值类型,而?适用于引用类型和值类型。
这些可以在文档中看到
可空引用类型使用与nullable相同的语法进行标记 取值类型:a ?附加到变量的类型后。”
这里
<T> where T: struct
int ?是Nullable<int>的缩写。这两种形式是可以互换的。
Nullable<T>是一个操作符,可以与值类型T一起使用,使其接受空值。
以防你不知道:值类型是接受int, bool, char等值的类型……
它们不能接受对值的引用:如果给它们分配一个空值,它们会生成一个编译时错误,而引用类型显然可以接受空值。
你为什么需要这个? 因为有时候你的值类型变量可能会收到一些工作不太好的东西返回的空引用,比如从数据库返回的一个缺失的或未定义的变量。
我建议你阅读微软文档,因为它很好地涵盖了这个主题。
它声明该类型是可空的。