“?”是什么意思?意思是在MVC中,当我们写数据类型为例如问题标记在MVC中意味着什么?
public Grade? Grade { get; set; }
什么是“?”节目吗?如果我不写“?”会有什么不同? ?
“?”是什么意思?意思是在MVC中,当我们写数据类型为例如问题标记在MVC中意味着什么?
public Grade? Grade { get; set; }
什么是“?”节目吗?如果我不写“?”会有什么不同? ?
Grade?
与Nullable<Grade>
相同。这是一个C# language feature,不是特定于MVC。
如果你想使任何属性为空,那么我们添加问号“?”
public Grade? Grade { get; set; }
- > Grade属性也会接受空值。
public Grade Grade { get; set; }
- >允许该物业
在您的评论中提供的链接没有空值,一级代表一个枚举类型,是值类型。值类型不能指向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;
这意味着可空类型可以使用原始值类型中的运算符。
?
表示可为空的类型。可为空的类型表示可以赋值为null
的值类型变量。您不能基于引用类型创建nullable
类型,因为引用类型已经支持null
。
从您的教程中提供的链接:
的高档物业是一个枚举。等级类型 声明后的问号表示Grade属性可以为空。甲 级这null是从零级不同 - null表示一个档次不 已知或尚未分配
所以,在相同的示例Enrollment
是引用类型,其,可为空由默认。因此在声明该类的对象时不需要明确的?
。
这是一个有效的可空的声明。您可以指定null
它:
int? num = null;
你也可以做一个:
int y = num.GetValueOrDefault();
凡y
会得到什么价值num
包含(如果它包含的值),否则null
这是默认为空的类型。
您可以expicitly检查它是否包含null
由:
num.HasValue();
你得到的值出可空的类型像这样的变量:
int y = num.value;
可以为空,它可以得到空值,你可以用'variable.HasValue'来检查 – Abhitalks
几个小时前我正在读这个。它允许可为空的类型,但如果Grade是一个类,我不明白为什么它需要有? operator – pcnThird
@pcnThird看到这个 http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an- asp-net-mvc-application 我正在执行本教程 – MSQ