【发布时间】:2011-05-09 15:34:48
【问题描述】:
我有以下 c# 代码,它会检查权限。我想知道,当转换为 f# 时,计算表达式是否会成为一种排除空值检查的方法。
bool ShouldGrantPermission(ISecurityService security, User user, Item item) {
return user != null && item != null && user.Id == item.AuthorId
&& security.Does(user).Have(MyPermission).On(item);
}
我想指出,如果任何项目为空,ISecurityService API 当前会返回 false。但是它会进行数据库调用,因此这里的代码会检查 null 然后进行 id 检查,因为在大多数情况下,这将返回 false 并避免数据库调用。
【问题讨论】: