ภาพรวม
เมธอด string.Intern(String) คืนอ้างอิงของสตริงใน string intern pool หากสตริงนั้นมีอยู่แล้วในพูล จะคืนอ้างอิงเดิม มิฉะนั้นจะเพิ่มเข้าไปและคืนอ้างอิงใหม่
ตัวอย่าง 1: สตริงทั่วไป
using System;
public class Demo {
public static void Main(string[] args) {
string str1 = "David";
string str2 = string.Intern(str1);
Console.WriteLine("String1 = " + str1);
Console.WriteLine("System reference of String1 = " + str2);
}
}
ผลลัพธ์ตัวอย่าง 1
String1 = David System reference of String1 = David
ตัวอย่าง 2: กำหนดค่าใหม่ให้ str2
using System;
public class Demo {
public static void Main(string[] args) {
string str1 = "50";
string str2 = "100";
Console.WriteLine("String1 = " + str1);
Console.WriteLine("String2 = " + str2);
str2 = string.Intern(str1);
Console.WriteLine("System reference of String1 = " + str2);
}
}
ผลลัพธ์ตัวอย่าง 2
String1 = 50 String2 = 100 System reference of String1 = 50
สรุป
- String interning ช่วยประหยัดหน่วยความจำเมื่อมีสตริงซ้ำมาก
string.IsInternedตรวจสอบว่าสตริงอยู่ในพูลหรือไม่ (คืน null ถ้าไม่มี)- สตริงลิเทอรัลในโค้ดถูก intern อัตโนมัติ