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

การบวกและการต่อสตริง (Concatenation) ใน C#

วิธีการต่อสตริงใน 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 อ่านง่ายกว่าเมื่อมีพารามิเตอร์เยอะ