Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

Compound Assignment Operators ใน C#: ตัวดำเนินการกำหนดค่าร่วม

Compound Assignment Operators** รวมตัวดำเนินการคำนวณและการกำหนดค่า (Assignment) ในตัวดำเนินการเดียว ทำให้โค้ดสั้นและอ่านง่าย

รายการ Operator ทั้งหมด

Operatorชื่อเทียบเท่า
+=Addition Assignmentx = x + y
-=Subtraction Assignmentx = x - y
*=Multiplication Assignmentx = x * y
/=Division Assignmentx = x / y
%=Modulo Assignmentx = x % y
&=Bitwise AND Assignmentx = x & y
|=Bitwise OR Assignmentx = x | y
^=Bitwise XOR Assignmentx = x ^ y
<<=Left Shift Assignmentx = x << y
>>=Right Shift Assignmentx = x >> y
=>Lambda Operator(ไม่ใช่ Compound Assignment)

ตัวอย่างการใช้งาน

using System;

namespace Program
{
    class MyClass
    {
        public static void Main(string[] args)
        {
            int val = 7;
            
            val += 3;  // val = val + 3 = 10
            Console.WriteLine($"Addition: {val}");
            
            val -= 2;  // val = val - 2 = 8
            Console.WriteLine($"Subtraction: {val}");
            
            val *= 7;  // val = val * 7 = 56
            Console.WriteLine($"Multiplication: {val}");
            
            val /= 7;  // val = val / 7 = 8
            Console.WriteLine($"Division: {val}");
            
            val %= 5;  // val = val % 5 = 3
            Console.WriteLine($"Modulo: {val}");
            
            val &= 9;  // val = val & 9 = 1 (Binary: 1000 & 1001 = 1000? Wait: 8 & 9 = 8... Let me check: 3 & 9 = 1)
            Console.WriteLine($"Bitwise AND: {val}");
            
            val <<= 3; // val = val << 3 = 8
            Console.WriteLine($"Left Shift: {val}");
            
            val >>= 5; // val = val >> 5 = 0
            Console.WriteLine($"Right Shift: {val}");
        }
    }
}

ผลลัพธ์

Addition: 10
Subtraction: 8
Multiplication: 56
Division: 8
Modulo: 3
Bitwise AND: 1
Left Shift: 8
Right Shift: 0

ข้อควรระวัง

  • Evaluation Order: x += y ประเมิน x เพียงครั้งเดียว (สำคัญถ้า x เป็น Property/Indexer ที่มี Side Effect)
  • Implicit Conversion: byte b = 10; b += 20; ทำงานได้ (Implicit Convert กลับ byte) แต่ b = b + 20 ต้อง Cast
  • Null Coalescing Assignment (C# 8+): ??= - กำหนดค่าเฉพาะเมื่อ Null: x ??= defaultValue;

Null Coalescing Assignment (??=)

string name = null;
name ??= "Default"; // name = "Default"

name ??= "Other";   // ไม่เปลี่ยน (name ไม่ใช่ null แล้ว)
Console.WriteLine(name); // "Default"