问号在MVC中意味着什么?

时间:2014-01-08 07:30:46

标签: c# asp.net-mvc types

什么是“?”在MVC中,当我们用数据类型编写它时,例如

public Grade? Grade { get; set; }

什么是“?”节目吗?如果我不写“?”会有什么不同?

5 个答案:

答案 0 :(得分:6)

如果你想使任何属性可以为空,那么我们添加问号“?”

public Grade? Grade { get; set; } - >等级属性也将接受空值。

public Grade Grade { get; set; } - >此属性不允许空值

答案 1 :(得分:2)

Grade?Nullable<Grade>相同。它是C# language feature,不是MVC特有的。

答案 2 :(得分:2)

在评论中提供的链接中,Grade表示枚举,它是值类型。值类型无法指向null,因此需要以?为后缀。用于表示空值的符号。它与说法基本相同:

public Nullable<Grade> Grade { get; set; }

更多例子:

int a = null; //not allowed
int b? = null; //allowed
string refType = null; //allowed
int x? = 2;
int y? = 2;

请记住,如果您尝试对可空类型执行操作,则操作员将被取消:

book areEqual = x == y;

转换为:

bool areEqual = (x.HasValue && y.HasValue) ? (x.Value == y.Value) : false;

这意味着可空类型可以使用原始值类型的运算符。

答案 3 :(得分:2)

?代表可以为空的类型。可空类型表示可以赋值null的值类型变量。您无法根据引用类型创建nullable类型,因为引用类型已支持null

从您为教程提供的链接:

  

成绩属性是枚举。成绩类型后面的问号   声明表示Grade属性可以为空。一个品级   null是零级别 - null表示级别不是   已知或尚未分配

因此,在同一示例中,Enrollment是一个引用类型,默认情况下可以为空。因此,在声明该类的对象时,不需要显式?

这是一个有效的可空声明。您可以为其指定null

int? num = null;

你也可以这样做:

int y = num.GetValueOrDefault();

y将获得num包含的任何值(如果它包含值),否则null是可空类型的默认值。

您可以通过以下方式明确检查其是否包含null

num.HasValue();

您从可以为空的类型变量中获取值,如下所示:

int y = num.value;

答案 4 :(得分:0)

作为参数传递给action方法时,id可能为null。

相关问题