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

วิธีดึงอ้างอิงของระบบสำหรับสตริงที่ระบุใน C#

ภาพรวม

เมธอด 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 อัตโนมัติ