复杂布尔逻辑
本课属于 Coddy C# 学习旅程的“逻辑与流程”单元。第 9 课,共 66 课。
组合多个条件时,布尔逻辑可能会变得复杂。理解运算符优先级并使用括号,有助于写出清晰、正确的表达式。
C# 中布尔运算符的优先级顺序是:
- NOT (!)
- AND (&&)
- OR (||)
下面是一个复杂布尔表达式的示例:
bool isValid = age >= 18 && (score > 70 || hasPriorExperience) && !isBlacklisted;使用德摩根定律简化复杂的否定表达式:
// 也可以写成:
if (!(age >= 18 && score > 70))
{
// 这等价于:
if (age < 18 || score <= 70)
{
Console.WriteLine("Not eligible");
}
}短路求值:使用 && 和 || 时,C# 只会计算必要的部分:
// 如果 user 是 null,C# 就不会判断第二个条件。
if (user != null && user.IsActive)
{
Console.WriteLine("Active user");
}为了让代码更清晰,即使不是严格必需,也要使用显式括号:
bool result = (isWeekend || isHoliday) && (hour > 10 && hour < 20);挑战
中等创建一个名为 determineAccess 的方法,根据以下规则判断用户是否有权访问系统:
- 接收 5 个参数:
- isAdmin(bool):用户是否为管理员
- isLoggedIn(bool):用户当前是否已登录
- timeOfDay(int):当前小时(0-23)
- isMaintenanceMode(bool):系统是否处于维护模式
- hasEmergencyAccess(bool):用户是否拥有紧急访问权限
- 当以下任一条件成立时返回 true:
- 用户是管理员并且已登录
- 时间处于营业时间(9-17,含边界),并且用户已登录,并且系统未处于维护模式
- 用户拥有紧急访问权限
亲手试试
public class DetermineAccess
{
// 实现 determineAccess 方法
public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
{
// 在这里编写你的代码
}
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C# 在线编译器