Unary Operator ในภาษา C#
Unary Operator (ตัวดำเนินการทางเดียว) คือ ตัวดำเนินการที่ใช้กับตัวแปรเพียงตัวเดียว (operand เดียว) เพื่อทำการคำนวณหรือเปลี่ยนแปลงค่าภายในตัวแปรนั้น เช่น การเพิ่มค่า (++), การลดค่า (--), การเปลี่ยนเครื่องหมาย (-), หรือการกลับค่าความจริง (!)

ต่างจากตัวดำเนินการทั่วไป (เช่น Arithmetic หรือ Comparison) ที่ต้องมีตัวแปรสองตัวขึ้นไปในการคำนวณ Unary Operator ทำงานได้ด้วยตัวเอง ซึ่งมักใช้ในการเขียนโค้ดที่เกี่ยวข้องกับการนับ การวนลูป การตรวจสอบเงื่อนไข หรือการแปลงค่าทางตรรกะ

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

ในภาษา C# มี Unary Operator หลัก ๆ ดังนี้

ตัวดำเนินการชื่อภาษาอังกฤษคำอธิบายตัวอย่างผลลัพธ์
+Unary Plusระบุค่าบวกของตัวแปร (ไม่เปลี่ยนค่า)+xx
-Unary Minusเปลี่ยนค่าจากบวกเป็นลบ หรือลบเป็นบวก-xถ้า x = 5 ผลลัพธ์คือ -5
++Incrementเพิ่มค่าของตัวแปรขึ้น 1x++ หรือ ++xเพิ่มค่า x ทีละ 1
--Decrementลดค่าของตัวแปรลง 1x-- หรือ --xลดค่า x ทีละ 1
!Logical NOTกลับค่าความจริงของ boolean (true เป็น false, false เป็น true)!isActiveถ้า isActive = true จะเปลี่ยนเป็น false
~Bitwise Complementกลับค่าบิตทั้งหมดของจำนวนเต็ม~5ได้ค่ากลับบิต เช่น ~0101 เป็น 1010

Unary Plus (+)

Unary Plus ใช้เพื่อระบุว่าตัวเลขเป็นบวก ซึ่งโดยปกติแล้วไม่จำเป็นต้องใช้ แต่ช่วยเพิ่มความชัดเจนในบางกรณี

C#
int number = +10;
Console.WriteLine(number);
  • +10 หมายถึงกำหนดค่าบวกให้ตัวแปร number
  • ไม่มีการเปลี่ยนค่าใด ๆ ใช้เพื่อความชัดเจนทางคณิตศาสตร์เท่านั้น

Unary Minus (-)

Unary Minus ใช้เปลี่ยนค่าตัวเลขจากบวกเป็นลบ หรือลบเป็นบวก

C#
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++;
C#
int x = 5;
int y = ++x;  // เพิ่มก่อนใช้
int z = x++;  // ใช้ก่อนเพิ่ม

Console.WriteLine($"x = {x}, y = {y}, z = {z}");
  • เริ่มต้น x = 5
  • ++x → เพิ่มก่อนใช้ → x เป็น 6 แล้วนำไปเก็บใน y
  • x++ → ใช้ก่อนเพิ่ม → ใช้ค่า 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--;
C#
int x = 10;
int y = --x;  // ลดก่อนใช้
int z = x--;  // ใช้ก่อนลด

Console.WriteLine($"x = {x}, y = {y}, z = {z}");
  • เริ่มต้น x = 10
  • --x → ลดก่อนใช้ → x เป็น 9 แล้วนำไปเก็บใน y
  • x-- → ใช้ก่อนลด → ใช้ค่า 9 เก็บใน z แล้วลดเหลือ 8
  • สุดท้าย x = 8, y = 9, z = 9

Logical NOT Operator (!)

Logical NOT ใช้สำหรับกลับค่าความจริงของตัวแปรประเภท boolean

C#
bool isOnline = true;

if (!isOnline)
{
    Console.WriteLine("ออฟไลน์");
}
else
{
    Console.WriteLine("ออนไลน์");
}
  • isOnline เริ่มต้นเป็น true
  • !isOnline กลับค่าความจริงเป็น false
  • โปรแกรมแสดงข้อความ “ออนไลน์” เพราะค่า isOnline เป็นจริง

Bitwise Complement (~)

~ ใช้สำหรับกลับค่าบิตทั้งหมดของจำนวนเต็ม โดยบิต 0 จะกลายเป็น 1 และบิต 1 จะกลายเป็น 0

C#
int value = 5;  // ค่าบิต 0101
int result = ~value;

Console.WriteLine(result);
  • 5 ในเลขฐานสองคือ 0000 0101
  • เมื่อใช้ ~ จะได้ 1111 1010 ซึ่งในระบบ signed integer คือ -6
  • ดังนั้น ~5 จะได้ผลลัพธ์เป็น -6

การใช้ Unary Operator ร่วมกับเงื่อนไข

ตัวดำเนินการ ++ และ -- มักถูกใช้ในคำสั่งวนลูป เช่น for, while

C#
for (int i = 1; i <= 5; i++)
{
    Console.WriteLine($"รอบที่ {i}");
}
  • ใช้ i++ เพื่อเพิ่มค่าทีละ 1 ในแต่ละรอบของลูป
  • จะทำงานซ้ำ 5 ครั้งตั้งแต่ i = 1 ถึง i = 5

ผลลัพธ์

รอบที่ 1
รอบที่ 2
รอบที่ 3
รอบที่ 4
รอบที่ 5

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

  1. อย่าสับสนระหว่าง Prefix และ Postfix
    • ++x เพิ่มก่อนใช้
    • x++ ใช้ก่อนเพิ่ม
      ความต่างนี้สำคัญในนิพจน์ที่มีหลายการคำนวณ
  2. ระวังเมื่อใช้ในนิพจน์ที่ซับซ้อน
    • เช่น y = x++ + ++x; อาจอ่านยากและคาดเดายาก
    • ควรแยกเป็นหลายบรรทัดเพื่อความชัดเจน
  3. ~ ใช้ได้เฉพาะกับชนิดข้อมูลเลขจำนวนเต็ม (int, long)
    • ใช้กับ float, double, หรือ bool ไม่ได้

Unary Operator ในภาษา C# เป็นเครื่องมือเล็ก ๆ แต่ทรงพลัง ที่ช่วยให้โค้ดทำงานได้กระชับและมีประสิทธิภาพ ไม่ว่าจะเป็นการเพิ่มหรือลดค่า การกลับค่าความจริง หรือการเปลี่ยนเครื่องหมาย การเข้าใจและใช้ให้ถูกต้องจะช่วยให้เราเขียนโปรแกรมได้ถูกต้องและอ่านง่ายขึ้น

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