複雑な論理演算
CoddyのC#ジャーニー「ロジックとフロー」セクションの一部。レッスン 9/66。
複数の条件を組み合わせると、ブール論理は複雑になることがあります。演算子の優先順位を理解し、括弧を使用することで、明確で正しい式を書くのに役立ちます。
C# のブール演算子の優先順位は:
- NOT (!)
- AND (&&)
- OR (||)
複雑なブール式の例を以下に示します:
bool isValid = age >= 18 && (score > 70 || hasPriorExperience) && !isBlacklisted;ド・モルガンの法則を使用して複雑な否定を簡略化します:
// Instead of:
if (!(age >= 18 && score > 70))
{
// This is equivalent to:
if (age < 18 || score <= 70)
{
Console.WriteLine("Not eligible");
}
}短絡評価: && と || を使用すると、C# は必要なものだけを評価します:
// If user is null, C# won't evaluate the second condition
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#オンラインコンパイラ