我有一段代码,用来检查返回的对象是否为空。如果是,它将返回0,否则将返回对象内部的属性。
var userPoints = (from Point p in entities.Point
where p.UserName == userName
select p).SingleOrDefault();
if (userPoints == null)
{
return 0;
}
else
{
return userPoints.Points;
}是否可以使用可空操作符简化if语句?我已经尝试过了,但系统在尝试读取属性时抛出异常
return userPoints.Points ?? 0;发布于 2011-04-04 16:59:13
不,不幸的是,没有任何东西可以做到这一点。选项:
userPoints.Points;
返回(从entities.Point中的点p开始,其中p.UserName == userName选择return
就我个人而言,我倾向于后一种方法:)如果你想要一个非0的默认值,你需要这样的东西:
return (from Point p in entities.Point
where p.UserName == userName
select (int?) p.Points).SingleOrDefault() ?? -1;发布于 2011-04-04 17:00:33
您可以这样做:
var userPoints = (from Point p in entities.Point
where p.UserName == userName
select p.Point).SingleOrDefault();
return userPoints;如果没有结果,则userPoints将为0,否则将为点数的值。
发布于 2011-04-04 16:58:03
您不能在您的上下文中使用它。
解释:
您希望检查userPoints是否为null,但如果不为null,则返回userPoints.Points。
??运算符检查第一个操作数是否为null,如果不为null,则返回它。如果你想要检查的东西和你想要返回的东西是两个不同的东西,那么它就不会起作用。
https://stackoverflow.com/questions/5536388
复制相似问题