Unary Operator ในภาษา C#
Unary Operator (ตัวดำเนินการทางเดียว) คือ ตัวดำเนินการที่ใช้กับตัวแปรเพียงตัวเดียว (operand เดียว) เพื่อทำการคำนวณหรือเปลี่ยนแปลงค่าภายในตัวแปรนั้น เช่น การเพิ่มค่า (++), การลดค่า (--), การเปลี่ยนเครื่องหมาย (-), หรือการกลับค่าความจริง (!)
ต่างจากตัวดำเนินการทั่วไป (เช่น Arithmetic หรือ Comparison) ที่ต้องมีตัวแปรสองตัวขึ้นไปในการคำนวณ Unary Operator ทำงานได้ด้วยตัวเอง ซึ่งมักใช้ในการเขียนโค้ดที่เกี่ยวข้องกับการนับ การวนลูป การตรวจสอบเงื่อนไข หรือการแปลงค่าทางตรรกะ
ประเภทของ Unary Operator ในภาษา C#
ในภาษา C# มี Unary Operator หลัก ๆ ดังนี้
| ตัวดำเนินการ | ชื่อภาษาอังกฤษ | คำอธิบาย | ตัวอย่าง | ผลลัพธ์ |
|---|---|---|---|---|
+ | Unary Plus | ระบุค่าบวกของตัวแปร (ไม่เปลี่ยนค่า) | +x | x |
- | Unary Minus | เปลี่ยนค่าจากบวกเป็นลบ หรือลบเป็นบวก | -x | ถ้า x = 5 ผลลัพธ์คือ -5 |
++ | Increment | เพิ่มค่าของตัวแปรขึ้น 1 | x++ หรือ ++x | เพิ่มค่า x ทีละ 1 |
-- | Decrement | ลดค่าของตัวแปรลง 1 | x-- หรือ --x | ลดค่า x ทีละ 1 |
! | Logical NOT | กลับค่าความจริงของ boolean (true เป็น false, false เป็น true) | !isActive | ถ้า isActive = true จะเปลี่ยนเป็น false |
~ | Bitwise Complement | กลับค่าบิตทั้งหมดของจำนวนเต็ม | ~5 | ได้ค่ากลับบิต เช่น ~0101 เป็น 1010 |
Unary Plus (+)
Unary Plus ใช้เพื่อระบุว่าตัวเลขเป็นบวก ซึ่งโดยปกติแล้วไม่จำเป็นต้องใช้ แต่ช่วยเพิ่มความชัดเจนในบางกรณี
int number = +10;
Console.WriteLine(number);+10หมายถึงกำหนดค่าบวกให้ตัวแปรnumber- ไม่มีการเปลี่ยนค่าใด ๆ ใช้เพื่อความชัดเจนทางคณิตศาสตร์เท่านั้น
Unary Minus (-)
Unary Minus ใช้เปลี่ยนค่าตัวเลขจากบวกเป็นลบ หรือลบเป็นบวก
int x = 10;
int y = -x;
Console.WriteLine(y);- ตัวแปร
xมีค่า 10 -xเปลี่ยนเครื่องหมายเป็นลบyจะมีค่าเท่ากับ-10
Increment Operator (++)
Increment Operator ใช้สำหรับ “เพิ่มค่าตัวแปรขึ้น 1” ในภาษา C# มีสองรูปแบบคือ
| รูปแบบ | ลักษณะการทำงาน | ตัวอย่าง |
|---|---|---|
Prefix (++x) | เพิ่มค่าก่อนนำไปใช้ | int y = ++x; |
Postfix (x++) | ใช้ค่าปัจจุบันก่อน แล้วค่อยเพิ่ม | int y = x++; |
int x = 5;
int y = ++x; // เพิ่มก่อนใช้
int z = x++; // ใช้ก่อนเพิ่ม
Console.WriteLine($"x = {x}, y = {y}, z = {z}");- เริ่มต้น
x = 5 ++x→ เพิ่มก่อนใช้ →xเป็น 6 แล้วนำไปเก็บในyx++→ ใช้ก่อนเพิ่ม → ใช้ค่าx = 6เก็บในzแล้วเพิ่มเป็น 7- สุดท้าย
x = 7,y = 6,z = 6
Decrement Operator (–)
Decrement Operator ทำหน้าที่ตรงข้ามกับ ++ คือ ลดค่าของตัวแปรลง 1
| รูปแบบ | ลักษณะการทำงาน | ตัวอย่าง |
|---|---|---|
Prefix (--x) | ลดค่าก่อนนำไปใช้ | int y = --x; |
Postfix (x--) | ใช้ค่าก่อน แล้วค่อยลด | int y = x--; |
int x = 10;
int y = --x; // ลดก่อนใช้
int z = x--; // ใช้ก่อนลด
Console.WriteLine($"x = {x}, y = {y}, z = {z}");- เริ่มต้น
x = 10 --x→ ลดก่อนใช้ →xเป็น 9 แล้วนำไปเก็บในyx--→ ใช้ก่อนลด → ใช้ค่า9เก็บในzแล้วลดเหลือ 8- สุดท้าย
x = 8,y = 9,z = 9
Logical NOT Operator (!)
Logical NOT ใช้สำหรับกลับค่าความจริงของตัวแปรประเภท boolean
bool isOnline = true;
if (!isOnline)
{
Console.WriteLine("ออฟไลน์");
}
else
{
Console.WriteLine("ออนไลน์");
}isOnlineเริ่มต้นเป็นtrue!isOnlineกลับค่าความจริงเป็นfalse- โปรแกรมแสดงข้อความ “ออนไลน์” เพราะค่า
isOnlineเป็นจริง
Bitwise Complement (~)
~ ใช้สำหรับกลับค่าบิตทั้งหมดของจำนวนเต็ม โดยบิต 0 จะกลายเป็น 1 และบิต 1 จะกลายเป็น 0
int value = 5; // ค่าบิต 0101
int result = ~value;
Console.WriteLine(result);5ในเลขฐานสองคือ0000 0101- เมื่อใช้
~จะได้1111 1010ซึ่งในระบบ signed integer คือ-6 - ดังนั้น
~5จะได้ผลลัพธ์เป็น-6
การใช้ Unary Operator ร่วมกับเงื่อนไข
ตัวดำเนินการ ++ และ -- มักถูกใช้ในคำสั่งวนลูป เช่น for, while
for (int i = 1; i <= 5; i++)
{
Console.WriteLine($"รอบที่ {i}");
}- ใช้
i++เพื่อเพิ่มค่าทีละ 1 ในแต่ละรอบของลูป - จะทำงานซ้ำ 5 ครั้งตั้งแต่
i = 1ถึงi = 5
ผลลัพธ์
รอบที่ 1
รอบที่ 2
รอบที่ 3
รอบที่ 4
รอบที่ 5
ข้อควรระวังในการใช้ Unary Operator
- อย่าสับสนระหว่าง Prefix และ Postfix
++xเพิ่มก่อนใช้x++ใช้ก่อนเพิ่ม
ความต่างนี้สำคัญในนิพจน์ที่มีหลายการคำนวณ
- ระวังเมื่อใช้ในนิพจน์ที่ซับซ้อน
- เช่น
y = x++ + ++x;อาจอ่านยากและคาดเดายาก - ควรแยกเป็นหลายบรรทัดเพื่อความชัดเจน
- เช่น
~ใช้ได้เฉพาะกับชนิดข้อมูลเลขจำนวนเต็ม (int, long)- ใช้กับ float, double, หรือ bool ไม่ได้
Unary Operator ในภาษา C# เป็นเครื่องมือเล็ก ๆ แต่ทรงพลัง ที่ช่วยให้โค้ดทำงานได้กระชับและมีประสิทธิภาพ ไม่ว่าจะเป็นการเพิ่มหรือลดค่า การกลับค่าความจริง หรือการเปลี่ยนเครื่องหมาย การเข้าใจและใช้ให้ถูกต้องจะช่วยให้เราเขียนโปรแกรมได้ถูกต้องและอ่านง่ายขึ้น
