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

การสลับค่าตัวแปรสองตัวโดยไม่ใช้ตัวแปรชั่วคราวใน C#

สามารถสลับค่าระหว่างตัวแปรสองตัวได้โดยใช้คณิตศาสตร์พื้นฐาน (บวก-ลบ) หรือ XOR bitwise โดยไม่ต้องใช้ตัวแปรที่สาม

วิธีที่ 1: ใช้การบวกและลบ (Arithmetic Swap)

int a = 5, b = 10;
a = a + b;  // a = 15
b = a - b;  // b = 5 (ค่าเดิมของ a)
a = a - b;  // a = 10 (ค่าเดิมของ b)

วิธีที่ 2: ใช้ XOR Bitwise (เหมาะสำหรับ Integer)

int a = 5, b = 10;
a = a ^ b;
b = a ^ b;
a = a ^ b;

วิธีนี้ไม่มีปัญหา Overflow และทำงานได้เร็วกว่าเล็กน้อย

ตัวอย่างโค้ดครบถ้วน

using System;

class Program {
    static void Main() {
        int val1 = 5, val2 = 10;
        
        Console.WriteLine("ก่อนสลับ: val1 = {0}, val2 = {1}", val1, val2);
        
        // วิธี Arithmetic
        val1 = val1 + val2;
        val2 = val1 - val2;
        val1 = val1 - val2;
        
        Console.WriteLine("หลังสลับ: val1 = {0}, val2 = {1}", val1, val2);
        Console.ReadLine();
    }
}

⚠️ ข้อควรระวัง

  • Overflow: วิธีบวก-ลบอาจล้มเหลวถ้าผลรวมเกิน int.MaxValue
  • อ่านยาก: โค้ดดูไม่ชัดเจน สำหรับโปรดักชันแนะนำใช้ตัวแปรชั่วคราว
  • Tuple Swap (C# 7+): (a, b) = (b, a); — วิธีที่ดีที่สุด อ่านง่าย ปลอดภัย และมีประสิทธิภาพเท่าเดิม

แนะนำ: ใช้ Tuple Swap (C# 7.0+)

int a = 5, b = 10;
(a, b) = (b, a); // สลับค่าได้ในบรรทัดเดียว ชัดเจนและปลอดภัย