วิธีการต่อสตริงใน C#
ใน C# มีหลักวิธีหลัก 2 วิธีสำหรับการต่อสตริง (String Concatenation):
1. ใช้ตัวดำเนินการ + (Plus Operator)
วิธีที่ง่ายและเข้าใจง่ายที่สุด
string str1 = "Tom";
string str2 = "Hanks" + str1; // ผลลัพธ์: "HanksTom"
ตัวอย่างโค้ด
using System;
class Program
{
static void Main()
{
string str1 = "Tom";
// การต่อสตริงด้วย + operator
string str2 = "Hanks" + str1;
Console.WriteLine(str2); // แสดง: HanksTom
// สามารถต่อหลายตัวได้
string fullName = "Mr. " + str2 + " Jr.";
Console.WriteLine(fullName); // แสดง: Mr. HanksTom Jr.
}
}
2. ใช้เมธอด string.Concat()
เมธอด static ของคลาส String ที่ใช้ต่อสตริงหลายตัวเข้าด้วยกัน
string str1 = "Tom";
string str2 = string.Concat("Hanks", str1); // ผลลัพธ์: "HanksTom"
ตัวอย่างโค้ด
using System;
class Program
{
static void Main()
{
string str1 = "Tom";
// การต่อสตริงด้วย string.Concat
string str2 = string.Concat("Hanks", str1);
Console.WriteLine(str2); // แสดง: HanksTom
// ต่อหลายสตริงพร้อมกัน
string result = string.Concat("Hello", " ", "World", "!");
Console.WriteLine(result); // แสดง: Hello World!
}
}
วิธีการอื่นๆ ที่น่าสนใจ
3. String Interpolation (แนะนำสำหรับ C# 6+)
string name = "Tom";
int age = 25;
string result = $"ชื่อ: {name}, อายุ: {age} ปี";
// ผลลัพธ์: "ชื่อ: Tom, อายุ: 25 ปี"
4. StringBuilder (สำหรับการต่อสตริงจำนวนมาก)
using System.Text;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++)
{
sb.Append(i).Append(", ");
}
string result = sb.ToString(); // ประสิทธิภาพดีกว่าการใช้ + ซ้ำๆ
5. string.Join() (สำหรับต่ออาร์เรย์/ลิสต์)
string[] words = { "C#", "is", "awesome" };
string sentence = string.Join(" ", words);
// ผลลัพธ์: "C# is awesome"
เปรียบเทียบประสิทธิภาพ
| วิธีการ | เหมาะสำหรับ | ประสิทธิภาพ |
|---|---|---|
| + operator | ต่อสตริงน้อย (ไม่เกิน 5-10 ตัว) | ดี |
| string.Concat | ต่อสตริงหลายตัวพร้อมกัน | ดี |
| String Interpolation | จัดรูปแบบสตริงอ่านง่าย | ดี (compile-time optimization) |
| StringBuilder | ต่อสตริงในลูปหรือจำนวนมาก | ดีที่สุด |
| string.Join | ต่อคอลเลกชันด้วย delimiter | ดี |
ข้อสังเกตสำคัญ
- สตริงใน C# เป็น immutable (ไม่สามารถเปลี่ยนแปลงได้) การต่อสตริงจะสร้างออบเจกต์ใหม่ทุกครั้ง
- ในลูปที่วนหลายรอบ ควรใช้
StringBuilderเพื่อประสิทธิภาพ string.Concatและ+ให้ผลลัพธ์เหมือนกัน แต่ Concat อ่านง่ายกว่าเมื่อมีพารามิเตอร์เยอะ