Menu
CoddyTech

复杂布尔逻辑

本课属于 Coddy C# 学习旅程的“逻辑与流程”单元。第 9 课,共 66 课。

组合多个条件时,布尔逻辑可能会变得复杂。理解运算符优先级并使用括号,有助于写出清晰、正确的表达式。

C# 中布尔运算符的优先级顺序是:

  1. NOT (!)
  2. AND (&&)
  3. 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);
challenge icon

挑战

中等

创建一个名为 determineAccess 的方法,根据以下规则判断用户是否有权访问系统:

  1. 接收 5 个参数:
    • isAdmin(bool):用户是否为管理员
    • isLoggedIn(bool):用户当前是否已登录
    • timeOfDay(int):当前小时(0-23)
    • isMaintenanceMode(bool):系统是否处于维护模式
    • hasEmergencyAccess(bool):用户是否拥有紧急访问权限
  2. 当以下任一条件成立时返回 true:
    • 用户是管理员并且已登录
    • 时间处于营业时间(9-17,含边界),并且用户已登录,并且系统未处于维护模式
    • 用户拥有紧急访问权限

亲手试试

public class DetermineAccess
{
    // 实现 determineAccess 方法
    public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
    {
        // 在这里编写你的代码
        
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C# 在线编译器