Assignment Operator ในภาษา C#

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

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

Assignment Operator พื้นฐาน

ตัวดำเนินการพื้นฐานที่สุดคือ = ซึ่งหมายถึง “นำค่าทางขวามือไปเก็บในตัวแปรทางซ้ายมือ” โดยไม่เกี่ยวข้องกับการเปรียบเทียบค่าเหมือน == (เท่ากับทางตรรกะ)

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int number = 10;
            string name = "สมชาย";
            double price = 19.99;

            Console.WriteLine(number);
            Console.WriteLine(name);
            Console.WriteLine(price);
        }
    }
}
  • int number = 10; → สร้างตัวแปรชนิด int ชื่อ number และกำหนดค่าเริ่มต้นเป็น 10
  • string name = "สมชาย"; → กำหนดค่าข้อความให้กับตัวแปร name
  • double price = 19.99; → กำหนดค่าทศนิยมให้กับตัวแปร price
  • Console.WriteLine(...) → แสดงค่าที่ถูกกำหนดไว้

ในภาษา C# ต้องกำหนดค่าที่มีชนิดข้อมูลตรงกับตัวแปรที่ประกาศไว้ เช่น int ต้องเก็บจำนวนเต็มเท่านั้น

Assignment Operator แบบย่อ (Compound Assignment Operators)

ภาษา C# มี “รูปแบบย่อ” ของการกำหนดค่า ซึ่งรวมการ “คำนวณ” เข้ากับการ “เก็บค่า” ในบรรทัดเดียว เรียกว่า Compound Assignment Operators เช่น +=, -=, *=, /=, และ %=

รูปแบบทั่วไปคือ

C#
x op= y;   // เท่ากับ x = x op y;

โดย op คือเครื่องหมายของตัวดำเนินการทางคณิตศาสตร์ เช่น +, -, *, /, %

ตัวอย่าง Assignment Operator แบบย่อ

ตัวดำเนินการตัวอย่างคำอธิบายผลลัพธ์เมื่อ x=10, y=5
=x = yกำหนดค่า y ให้กับ x5
+=x += yบวก y เข้ากับ x15
-=x -= yลบ y ออกจาก x5
*=x *= yคูณ x ด้วย y50
/=x /= yหาร x ด้วย y2
%=x %= yหาค่าเศษของ x ÷ y0
C#
int x = 10;
int y = 3;

x += y; // เท่ากับ x = x + y;
Console.WriteLine($"ค่าของ x หลังจาก x += y คือ {x}");

x *= 2; // เท่ากับ x = x * 2;
Console.WriteLine($"ค่าของ x หลังจาก x *= 2 คือ {x}");

x -= 5; // เท่ากับ x = x - 5;
Console.WriteLine($"ค่าของ x หลังจาก x -= 5 คือ {x}");
  • เริ่มต้น x = 10, y = 3
  • x += y; → บวกค่า y เข้ากับ x ได้ 13
  • x *= 2; → คูณ x ด้วย 2 ได้ 26
  • x -= 5; → ลบออก 5 เหลือ 21

การใช้ Assignment Operator กับชนิดข้อมูลอื่น

Assignment Operator ไม่จำกัดเฉพาะตัวเลข แต่ยังสามารถใช้กับชนิดข้อมูลอื่น เช่น string หรือ boolean ได้ด้วย

ตัวอย่างการใช้กับข้อความ

C#
string message = "Hello";
message += " World!";
Console.WriteLine(message);
  • เริ่มจากข้อความ "Hello"
  • ใช้ += เพื่อเชื่อมข้อความ " World!"
  • ผลลัพธ์คือ "Hello World!"

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

C#
bool isActive = false;
isActive = !isActive; // กลับค่าจาก false → true
Console.WriteLine(isActive);
  • ใช้ = เพื่อกำหนดค่าเริ่มต้นเป็น false
  • ใช้ ! (NOT operator) ร่วมกับ = เพื่อกลับค่าความจริง
  • ผลลัพธ์สุดท้ายคือ true

Assignment Operator แบบซ้อน

เราสามารถกำหนดค่าหลายตัวในบรรทัดเดียวได้ เช่น

C#
int a, b, c;
a = b = c = 100;
Console.WriteLine($"{a}, {b}, {c}");
  • a = b = c = 100; หมายถึงนำค่า 100 ไปเก็บใน c ก่อน แล้วนำค่าของ c ไปเก็บใน b และ a
  • ผลลัพธ์คือทั้งสามตัวแปรมีค่าเท่ากันคือ 100

ตาราง Assignment Operators ใน C#

ตัวดำเนินการชื่อ (Operator Name)คำอธิบายการทำงานตัวอย่างผลลัพธ์เมื่อ x = 10, y = 5
=Simple Assignmentนำค่าทางขวามือไปเก็บในตัวแปรทางซ้ายมือx = yx = 5
+=Add and Assignบวกค่าทางขวามือเข้ากับค่าปัจจุบันของตัวแปรx += yx = x + y15
-=Subtract and Assignลบค่าทางขวามือออกจากค่าปัจจุบันx -= yx = x - y5
*=Multiply and Assignคูณค่าปัจจุบันด้วยค่าทางขวามือx *= yx = x * y50
/=Divide and Assignหารค่าปัจจุบันด้วยค่าทางขวามือx /= yx = x / y2
%=Modulus and Assignหาค่าเศษจากการหารแล้วเก็บผลลัพธ์ไว้x %= yx = x % y0
<<=Left Shift and Assignเลื่อนบิตไปทางซ้ายตามจำนวนตำแหน่งที่ระบุx <<= 240 (บิต 1010 → 101000)
>>=Right Shift and Assignเลื่อนบิตไปทางขวาตามจำนวนตำแหน่งที่ระบุx >>= 15 (บิต 1010 → 0101)
&=Bitwise AND and Assignนำค่า AND ของ บิตทั้งสองด้านมาเก็บx &= y0 (1010 & 0101 = 0000)
^=Bitwise XOR and Assignนำค่า XOR ของ บิตทั้งสองด้านมาเก็บx ^= y15 (1010 ^ 0101 = 1111)
??=Null-Coalescing Assignmentกำหนดค่าทางขวามือ เฉพาะเมื่อค่าทางซ้ายเป็น nulla ??= 10;ถ้า a == nulla = 10

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

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int x = 10;
            int y = 5;

            x += y;   // 15
            x -= 2;   // 13
            x *= 2;   // 26
            x /= 2;   // 13
            x %= 5;   // 3
            x <<= 1;  // 6
            x >>= 2;  // 1
            x |= 2;   // 3
            x &= 1;   // 1
            x ^= 5;   // 4

            int? a = null;
            a ??= 100; // ตั้งค่าเฉพาะเมื่อ a เป็น null

            Console.WriteLine($"x = {x}");
            Console.WriteLine($"a = {a}");
        }
    }
}
  • x += y → บวกค่า y เข้าไปใน x
  • x -= 2 → ลบออก 2
  • x *= 2 → คูณด้วย 2
  • x /= 2 → หารด้วย 2
  • x %= 5 → หาค่าเศษจาก 5
  • x <<= 1 / x >>= 2 → เลื่อนบิตไปทางซ้ายหรือขวา
  • x |= 2, x &= 1, x ^= 5 → ใช้ Bitwise Operators ร่วมกับ Assignment
  • a ??= 100 → กำหนด 100 ให้ a เฉพาะกรณีที่ a เป็น null

ตัวอย่างโปรแกรมจำลองการคำนวณ

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.Write("กรอกจำนวนสินค้า: ");
            int quantity = Convert.ToInt32(Console.ReadLine());

            Console.Write("กรอกราคาต่อชิ้น: ");
            double price = Convert.ToDouble(Console.ReadLine());

            double total = 0;
            total += quantity * price;  // ใช้ Assignment Operator แบบย่อ

            Console.WriteLine($"ราคารวมทั้งหมดคือ: {total} บาท");
        }
    }
}
  • รับค่าจำนวนสินค้าและราคาต่อชิ้นจากผู้ใช้
  • ใช้ += เพื่อเพิ่มค่าราคารวมเข้าไปในตัวแปร total
  • แสดงผลราคารวมออกทาง Console

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

  1. อย่าสับสนระหว่าง = และ ==
    • = ใช้กำหนดค่า
    • == ใช้เปรียบเทียบค่า
      ตัวอย่างความผิดพลาดที่พบบ่อยคือใช้ = แทน == ในเงื่อนไข if
  2. อย่าใช้กับชนิดข้อมูลต่างประเภทโดยไม่แปลงค่า (Type Casting)
    เช่น int x = 10.5; จะเกิดข้อผิดพลาด ควรแปลงเป็น (int)10.5 ก่อน
  3. ระวังการกำหนดค่าแบบซ้อนหลายชั้น
    แม้จะทำได้ แต่ควรเขียนให้ชัดเจนเพื่อป้องกันความสับสน

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

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