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 ใช้สำหรับการคำนวณตัวเลข เช่น บวก ลบ คูณ หาร หรือหาค่าเศษจากการหาร
ตัวอย่าง
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 ใช้กำหนดค่าหรืออัปเดตค่าของตัวแปรอย่างรวดเร็ว
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)
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)
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
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 แบบสั้น เหมาะกับการตรวจสอบค่าเล็กน้อย
namespace MyConsoleApp
{
internal class Program
{
static void Main(string[] args)
{
int age = 18;
string result = (age >= 18) ? "บรรลุนิติภาวะ" : "ยังไม่บรรลุนิติภาวะ";
Console.WriteLine(result);
}
}
}(เงื่อนไข) ? ค่าถ้าเป็นจริง : ค่าถ้าเป็นเท็จ;- เหมาะกับกรณีต้องการตัดสินใจระหว่างสองค่าด้วยเงื่อนไขเดียว
Bitwise Operators ตัวดำเนินการระดับบิต
ใช้จัดการข้อมูลในระดับบิต เหมาะกับงานที่เกี่ยวข้องกับระบบ เช่น embedded system หรือการเข้ารหัสข้อมูล
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 หลายประเภทผสมกัน เช่น
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) - การใช้
=แทน==ในเงื่อนไขอาจทำให้เกิดผลลัพธ์ผิด - การใช้
++และ--ภายในนิพจน์ที่ซับซ้อนอาจทำให้ค่าผิดพลาดได้
