สามารถสลับค่าระหว่างตัวแปรสองตัวได้โดยใช้คณิตศาสตร์พื้นฐาน (บวก-ลบ) หรือ 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); // สลับค่าได้ในบรรทัดเดียว ชัดเจนและปลอดภัย