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 | ใช้กลับค่าความจริง (true → false, false → true) | !(a > b) | ถ้า (a > b) เป็นจริง จะได้ false |
การทำงานของ Logical Operator
Logical Operator จะทำการประเมินผลจาก “เงื่อนไขย่อย” ทีละตัวตามกฎตรรกศาสตร์
- AND (&&) → จะเป็นจริง (
true) ก็ต่อเมื่อเงื่อนไขทั้งสองเป็นจริง - OR (||) → จะเป็นจริง (
true) หากมีอย่างน้อยหนึ่งเงื่อนไขเป็นจริง - NOT (!) → กลับค่าความจริง (ถ้าเป็นจริงจะเป็นเท็จ, ถ้าเป็นเท็จจะเป็นจริง)
ตัวอย่างการใช้ Logical AND (&&)
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 (||)
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 (!)
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 สามารถผสมหลายเงื่อนไขพร้อมกันได้ เช่น ตรวจสอบช่วงคะแนนหรือสถานะหลายค่า
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จะไม่ตรวจสอบเงื่อนไขที่สอง
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)
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
- ระวังการใช้เงื่อนไขที่ซับซ้อนเกินไป
แนะนำให้ใช้วงเล็บ()เพื่อควบคุมลำดับการประเมินและให้อ่านง่าย - อย่าสับสนระหว่าง
&กับ&&หรือ|กับ||&&และ||เป็น Logical Operator ที่ใช้กับค่า boolean&และ|เป็น Bitwise Operator ที่ใช้กับข้อมูลระดับบิต
- อย่าลืม Short-Circuit Evaluation
ใช้ให้เหมาะสมเพื่อป้องกันข้อผิดพลาดในการคำนวณ
Logical Operator เป็นเครื่องมือสำคัญที่ช่วยให้โปรแกรม “คิดแบบมีเหตุผล” ได้ การเข้าใจการใช้ &&, ||, และ ! อย่างถูกต้อง จะทำให้เราสามารถสร้างเงื่อนไขที่ซับซ้อน ควบคุมลำดับการทำงาน และป้องกันข้อผิดพลาดในโปรแกรมได้อย่างมีประสิทธิภาพ
