Operator ในภาษา C#
ในภาษา C# “Operator (ตัวดำเนินการ)” คือ สัญลักษณ์พิเศษหรือเครื่องหมาย ที่ใช้ในการกระทำบางอย่างกับค่าหรือตัวแปร เช่น การบวก ลบ คูณ หาร การเปรียบเทียบค่า หรือการตรวจสอบเงื่อนไข

ตัวอย่างง่าย ๆ เช่น +, -, *, /, % ซึ่งใช้คำนวณทางคณิตศาสตร์ หรือ ==, !=, <, > ซึ่งใช้เปรียบเทียบค่าระหว่างตัวแปร

การเข้าใจ Operator เป็นพื้นฐานสำคัญของการเขียนโปรแกรม เพราะช่วยให้เราสามารถเขียนโค้ดที่คำนวณ ตัดสินใจ และควบคุมการทำงานของโปรแกรมได้อย่างมีประสิทธิภาพ

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

C# มีตัวดำเนินการหลายประเภท แบ่งตามหน้าที่ดังนี้

ประเภทตัวอย่างหน้าที่
Arithmetic Operators+, -, *, /, %ใช้คำนวณทางคณิตศาสตร์
Assignment Operators=, +=, -=, *=, /=ใช้กำหนดค่าให้ตัวแปร
Comparison Operators==, !=, <, >, <=, >=ใช้เปรียบเทียบค่าระหว่างตัวแปร
Logical Operators&&, ||, !ใช้รวมเงื่อนไขหลายเงื่อนไขเข้าด้วยกัน
Unary Operators++, --, +, -ใช้กับตัวแปรเพียงตัวเดียว
Ternary Operator? :ใช้เขียนเงื่อนไขแบบย่อ
Bitwise Operators&, |, ^, ~, <<, >>ใช้จัดการข้อมูลในระดับบิต

Arithmetic Operators ตัวดำเนินการทางคณิตศาสตร์

Arithmetic Operators ใช้สำหรับการคำนวณตัวเลข เช่น บวก ลบ คูณ หาร หรือหาค่าเศษจากการหาร

ตัวอย่าง

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int a = 10;
            int b = 3;

            Console.WriteLine(a + b);  // 13
            Console.WriteLine(a - b);  // 7
            Console.WriteLine(a * b);  // 30
            Console.WriteLine(a / b);  // 3
            Console.WriteLine(a % b);  // 1
        }
    }
}
  • + ใช้บวกสองจำนวน
  • - ใช้ลบ
  • * ใช้คูณ
  • / ใช้หาร (ถ้าทั้งสองเป็น int จะปัดเศษออก)
  • % ใช้หาค่าเศษจากการหาร

หากต้องการผลหารเป็นทศนิยม ควรแปลงอย่างน้อยหนึ่งตัวเป็น double เช่น (double)a / b;

Assignment Operators ตัวดำเนินการกำหนดค่า

Assignment Operators ใช้กำหนดค่าหรืออัปเดตค่าของตัวแปรอย่างรวดเร็ว

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int x = 5;
            x += 3;  // เท่ากับ x = x + 3
            x -= 2;  // เท่ากับ x = x - 2
            x *= 4;  // เท่ากับ x = x * 4
            x /= 2;  // เท่ากับ x = x / 2
        }
    }
}

ตัวดำเนินการเหล่านี้ช่วยย่นโค้ดที่ซ้ำซ้อน ทำให้เขียนได้กระชับและอ่านง่ายขึ้น

Comparison Operators ตัวดำเนินการเปรียบเทียบ

ใช้เปรียบเทียบค่าระหว่างตัวแปร เช่น ตรวจสอบว่าค่าสองค่ามีค่าเท่ากัน มากกว่า หรือน้อยกว่า โดยผลลัพธ์จะเป็นค่าตรรกะ (true หรือ false)

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int a = 10, b = 5;
            Console.WriteLine(a == b);  // false
            Console.WriteLine(a != b);  // true
            Console.WriteLine(a > b);   // true
            Console.WriteLine(a < b);   // false
            Console.WriteLine(a >= 10); // true
            Console.WriteLine(a <= 5);  // false
        }
    }
}
  • == ตรวจสอบว่าค่าสองตัวเท่ากัน
  • != ตรวจสอบว่าค่าสองตัวไม่เท่ากัน
  • >, <, >=, <= ใช้เปรียบเทียบขนาดของค่า

Logical Operators ตัวดำเนินการทางตรรกะ

ใช้รวมเงื่อนไขหลายเงื่อนไขเข้าด้วยกัน โดยให้ผลลัพธ์เป็นจริง (true) หรือเท็จ (false)

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

            Console.WriteLine(isStudent && hasCard); // false
            Console.WriteLine(isStudent || hasCard); // true
            Console.WriteLine(!isStudent);           // false
        }
    }
}
  • && (AND) จะเป็น true ก็ต่อเมื่อทั้งสองเงื่อนไขเป็นจริง
  • || (OR) จะเป็น true หากมีเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง
  • ! (NOT) ใช้กลับค่าความจริง

Unary Operators ตัวดำเนินการทางเดียว

Unary Operator ใช้กับตัวแปรเพียงตัวเดียว เช่น เพิ่มค่าหรือลดค่าทีละ 1

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int num = 5;
            num++;  // เพิ่มค่าเป็น 6
            num--;  // ลดค่าเป็น 5
            Console.WriteLine(num);
        }
    }
}
  • ++ ใช้เพิ่มค่าขึ้นทีละ 1
  • -- ใช้ลดค่าลงทีละ 1
  • สามารถวางไว้หน้า (++num) หรือหลัง (num++) ตัวแปรได้ ผลลัพธ์ต่างกันเล็กน้อยในกรณีที่ใช้ภายในนิพจน์

Ternary Operator เขียนเงื่อนไขแบบย่อ

Ternary Operator ใช้เขียนเงื่อนไข if...else แบบสั้น เหมาะกับการตรวจสอบค่าเล็กน้อย

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int age = 18;
            string result = (age >= 18) ? "บรรลุนิติภาวะ" : "ยังไม่บรรลุนิติภาวะ";
            Console.WriteLine(result);
        }
    }
}
  • (เงื่อนไข) ? ค่าถ้าเป็นจริง : ค่าถ้าเป็นเท็จ;
  • เหมาะกับกรณีต้องการตัดสินใจระหว่างสองค่าด้วยเงื่อนไขเดียว

Bitwise Operators ตัวดำเนินการระดับบิต

ใช้จัดการข้อมูลในระดับบิต เหมาะกับงานที่เกี่ยวข้องกับระบบ เช่น embedded system หรือการเข้ารหัสข้อมูล

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int a = 5;   // 0101
            int b = 3;   // 0011

            Console.WriteLine(a & b); // 1  (0101 & 0011 = 0001)
            Console.WriteLine(a | b); // 7  (0101 | 0011 = 0111)
            Console.WriteLine(a ^ b); // 6  (0101 ^ 0011 = 0110)
        }
    }
}
  • & (AND) คืนค่า 1 เมื่อทั้งสองบิตเป็น 1
  • | (OR) คืนค่า 1 เมื่อมีบิตใดบิตหนึ่งเป็น 1
  • ^ (XOR) คืนค่า 1 เมื่อบิตทั้งสองต่างกัน

การใช้งาน Operator ร่วมกัน

ในโปรแกรมจริง มักต้องใช้ Operator หลายประเภทผสมกัน เช่น

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int a = 10, b = 5;
            bool result = (a + b > 12) && (a > b);
            Console.WriteLine(result);
        }
    }
}
  • (a + b > 12) ตรวจสอบว่าผลรวมมากกว่า 12 หรือไม่
  • (a > b) ตรวจสอบว่า a มากกว่า b หรือไม่
  • && รวมเงื่อนไขทั้งสอง ถ้าทั้งคู่เป็นจริงจะได้ผลลัพธ์ true

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

การใช้ Operator อย่างไม่ระมัดระวังอาจนำไปสู่ผลลัพธ์ที่ไม่คาดคิด เช่น

  • การหารด้วยศูนย์ (/ 0) จะทำให้เกิดข้อผิดพลาด (DivideByZeroException)
  • การใช้ = แทน == ในเงื่อนไขอาจทำให้เกิดผลลัพธ์ผิด
  • การใช้ ++ และ -- ภายในนิพจน์ที่ซับซ้อนอาจทำให้ค่าผิดพลาดได้
แชร์เรื่องนี้