Logical Operator ในภาษา C#

Logical Operator ในภาษา C#
Logical Operator (ตัวดำเนินการทางตรรกะ) คือเครื่องหมายที่ใช้ในการเชื่อมโยงเงื่อนไขทางตรรกะ (Boolean expressions) เพื่อประเมินค่าความจริง (true หรือ false) ในภาษา C#

โดยทั่วไปแล้ว Logical Operator จะใช้คู่กับ Comparison Operator เช่น <, >, ==, != เพื่อสร้างเงื่อนไขที่ซับซ้อนในคำสั่งควบคุม (if, while, for, switch)

ประเภทของ Logical Operator ในภาษา C#

ภาษา C# มี Logical Operator หลักอยู่ 3 ตัว ดังนี้

ตัวดำเนินการชื่อ (Operator Name)ความหมายตัวอย่างผลลัพธ์
&&Logical ANDจะได้ค่า true เมื่อทั้งสองเงื่อนไขเป็นจริง(a > b) && (x > y)true ถ้าทั้งคู่เป็นจริง
||Logical ORจะได้ค่า true ถ้ามีเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง(a > b) || (x > y)ถ้าเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง จะได้ true
!Logical NOTใช้กลับค่าความจริง (truefalse, falsetrue)!(a > b)ถ้า (a > b) เป็นจริง จะได้ false

การทำงานของ Logical Operator

Logical Operator จะทำการประเมินผลจาก “เงื่อนไขย่อย” ทีละตัวตามกฎตรรกศาสตร์

  • AND (&&) → จะเป็นจริง (true) ก็ต่อเมื่อเงื่อนไขทั้งสองเป็นจริง
  • OR (||) → จะเป็นจริง (true) หากมีอย่างน้อยหนึ่งเงื่อนไขเป็นจริง
  • NOT (!) → กลับค่าความจริง (ถ้าเป็นจริงจะเป็นเท็จ, ถ้าเป็นเท็จจะเป็นจริง)

ตัวอย่างการใช้ Logical AND (&&)

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int age = 25;
            bool hasLicense = true;

            if (age >= 18 && hasLicense)
            {
                Console.WriteLine("สามารถขับรถได้");
            }
            else
            {
                Console.WriteLine("ยังไม่สามารถขับรถได้");
            }

        }
    }
}
  • age >= 18 → ตรวจสอบว่าอายุมากพอหรือไม่
  • hasLicense → ตรวจสอบว่ามีใบขับขี่หรือไม่
  • ใช้ && เพื่อรวมเงื่อนไขทั้งสอง
  • ผลลัพธ์จะเป็นจริง (true) ก็ต่อเมื่อทั้งสองเงื่อนไขเป็นจริง

ตัวอย่างการใช้ Logical OR (||)

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int score = 40;
            bool hasExtraCredit = true;

            if (score >= 50 || hasExtraCredit)
            {
                Console.WriteLine("ผ่านเกณฑ์");
            }
            else
            {
                Console.WriteLine("ไม่ผ่านเกณฑ์");
            }
        }
    }
}
  • ใช้ || (OR) เพื่อให้ผ่านได้หากเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง
  • แม้คะแนนไม่ถึง 50 แต่มีคะแนนพิเศษ (hasExtraCredit == true) จึงผ่านเกณฑ์

ตัวอย่างการใช้ Logical NOT (!)

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            bool isLoggedIn = false;

            if (!isLoggedIn)
            {
                Console.WriteLine("กรุณาเข้าสู่ระบบก่อนดำเนินการ");
            }
        }
    }
}
  • ตัวแปร isLoggedIn มีค่า false
  • !isLoggedIn กลับค่าความจริงเป็น true
  • โปรแกรมจึงแสดงข้อความให้ผู้ใช้เข้าสู่ระบบก่อน

การใช้ Logical Operator หลายตัวร่วมกัน

Logical Operators สามารถผสมหลายเงื่อนไขพร้อมกันได้ เช่น ตรวจสอบช่วงคะแนนหรือสถานะหลายค่า

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int score = 85;
            bool hasSubmitted = true;

            if ((score >= 80 && score <= 100) && hasSubmitted)
            {
                Console.WriteLine("ผลการเรียน: ผ่านดีเยี่ยม");
            }
            else
            {
                Console.WriteLine("ไม่ผ่านหรือยังไม่ส่งงาน");
            }
        }
    }
}
  • (score >= 80 && score <= 100) → ตรวจสอบว่าคะแนนอยู่ในช่วงที่กำหนด
  • hasSubmitted → ตรวจสอบว่าส่งงานแล้วหรือยัง
  • รวมกันด้วย && สองชุด เพื่อให้ผ่านได้เมื่อทั้ง “ช่วงคะแนนถูกต้อง” และ “ส่งงานแล้ว”

Short-Circuit Evaluation

ภาษา C# มีคุณสมบัติที่เรียกว่า Short-Circuit Evaluation หมายถึงการหยุดการประเมินเงื่อนไขทันทีเมื่อรู้ผลแล้ว

  • สำหรับ && → หากเงื่อนไขแรกเป็น false จะไม่ตรวจสอบเงื่อนไขที่สอง
  • สำหรับ || → หากเงื่อนไขแรกเป็น true จะไม่ตรวจสอบเงื่อนไขที่สอง
C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int x = 5;
            if (x > 10 && x / 0 == 0) // ไม่เกิด error เพราะ x > 10 เป็น false ก่อน
            {
                Console.WriteLine("ผ่าน");
            }
        }
    }
}

ถ้าไม่มี Short-Circuit ระบบจะพยายามคำนวณ x / 0 ซึ่งทำให้เกิด error (DivideByZeroException)

การใช้ Logical Operator ในสถานการณ์จริง

Logical Operator มักใช้ในการตรวจสอบเงื่อนไขที่ซับซ้อน เช่น

  • ระบบล็อกอิน: (username == "admin" && password == "1234")
  • ระบบสมัครเรียน: (age >= 18 && hasIDCard)
  • ระบบคะแนนสอบ: (score >= 50 || hasExtraWork)
C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string username = "admin";
            string password = "1234";

            if (username == "admin" && password == "1234")
            {
                Console.WriteLine("เข้าสู่ระบบสำเร็จ");
            }
            else
            {
                Console.WriteLine("ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง");
            }
        }
    }
}

ข้อควรระวังในการใช้ Logical Operator

  1. ระวังการใช้เงื่อนไขที่ซับซ้อนเกินไป
    แนะนำให้ใช้วงเล็บ () เพื่อควบคุมลำดับการประเมินและให้อ่านง่าย
  2. อย่าสับสนระหว่าง & กับ && หรือ | กับ ||
    • && และ || เป็น Logical Operator ที่ใช้กับค่า boolean
    • & และ | เป็น Bitwise Operator ที่ใช้กับข้อมูลระดับบิต
  3. อย่าลืม Short-Circuit Evaluation
    ใช้ให้เหมาะสมเพื่อป้องกันข้อผิดพลาดในการคำนวณ

Logical Operator เป็นเครื่องมือสำคัญที่ช่วยให้โปรแกรม “คิดแบบมีเหตุผล” ได้ การเข้าใจการใช้ &&, ||, และ ! อย่างถูกต้อง จะทำให้เราสามารถสร้างเงื่อนไขที่ซับซ้อน ควบคุมลำดับการทำงาน และป้องกันข้อผิดพลาดในโปรแกรมได้อย่างมีประสิทธิภาพ

แชร์เรื่องนี้