我有这段代码,用于检查返回的对象是否为null。如果是这样,它将返回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;
答案 0 :(得分:2)
不,不幸的是,没有什么可以做到这一点。选项:
使用条件运算符:
return userPoints == null ? 0 : userPoints.Points;
更改您的查询以使 执行默认操作:
return (from Point p in entities.Point
where p.UserName == userName
select p.Points).SingleOrDefault();
就个人而言,我会选择后一种方法:)如果你想要一个非0的默认值,你需要这样的东西:
return (from Point p in entities.Point
where p.UserName == userName
select (int?) p.Points).SingleOrDefault() ?? -1;
答案 1 :(得分:1)
你可以这样做:
var userPoints = (from Point p in entities.Point
where p.UserName == userName
select p.Point).SingleOrDefault();
return userPoints;
如果没有结果,则userPoints将为0,否则将为Points的值。
答案 2 :(得分:0)
您无法在上下文中使用它
说明:
您想要检查userPoints
是否为空,但是如果它不为空则想要返回userPoints.Points
??
运算符检查第一个操作数是否为null,如果它不为null则返回它。如果您要检查的内容和要返回的内容是两个不同的东西,它就不起作用。
答案 3 :(得分:0)
用鼠标将鼠标悬停在var
上,看看它是什么类型。