มันเป็นเรื่องของการเพิ่มประสิทธิภาพของการใช้หน่วยความจำและการเพิ่มประสิทธิภาพของการเปรียบเทียบสตริง ทุกครั้งที่คุณใช้สตริงว่างในแอปพลิเคชันของคุณคุณกำลังจัดสรรวัตถุสตริงที่มี 0 ตัวอักษร สำหรับการเปรียบเทียบสตริงสามารถทำได้โดยการเปรียบเทียบการอ้างอิง (พอยน์เตอร์) แทนตัวอักษรโดยตัวละครซึ่งเป็นได้เร็วขึ้นแม้สำหรับสตริงที่ว่างเปล่า
หากคุณใช้สตริงเดียวกันหลายครั้งในแอปพลิเคชันของคุณคุณสามารถใช้กลไกชนิดเดียวกันได้โดยการเรียก String.Intern () กับสตริงของคุณ แต่ถ้าคุณใช้แต่ละสายเพียงครั้งเดียวคุณก็จะใช้หน่วยความจำได้มากกว่าเท่านั้น
ดังนั้น String.Empty เป็นเพียงการเพิ่มประสิทธิภาพกรณีพิเศษซึ่งคุ้มค่าที่จะทำสำหรับแอปพลิเคชั่น. Net ส่วนใหญ่นั่นคือสาเหตุที่มันถูกรวมเข้ากับ BCL
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้ผมขอแนะนำให้อ่านบล็อกโพสต์เอริค Lippert ของ
คุณควรดูเอกสารนี้อ้างอิงโดยโพสต์บล็อกของเขา