คุณสมบัติที่ยอดเยี่ยม ฉันแค่ต้องการชี้ให้เห็นความสำคัญว่าทำไมสิ่งนี้ถึงดีกว่า string.format หากบางคนไม่ชัดเจน
ฉันอ่านบางคนกำลังพูดว่า order string.format เป็น "{0} {1} {2}" เพื่อให้ตรงกับพารามิเตอร์ คุณไม่ได้ถูกบังคับให้สั่ง "{0} {1} {2}" ใน string.format คุณสามารถทำ "{2} {0} {1}" อย่างไรก็ตามหากคุณมีพารามิเตอร์จำนวนมากเช่น 20 คุณต้องการจัดลำดับสตริงเป็น "{0} {1} {1} {2} ... {19}" หากเป็นระเบียบแบบสับคุณจะมีช่วงเวลาที่ยากในการเรียงพารามิเตอร์ของคุณ
ด้วย $ คุณสามารถเพิ่มพารามิเตอร์แบบอินไลน์โดยไม่ต้องนับพารามิเตอร์ของคุณ ทำให้รหัสอ่านและบำรุงรักษาง่ายขึ้น
ข้อเสียของ $ คือคุณไม่สามารถทำซ้ำพารามิเตอร์ในสตริงได้อย่างง่ายดายคุณต้องพิมพ์มัน ตัวอย่างเช่นถ้าคุณเบื่อที่จะพิมพ์ System.Environment.NewLine คุณสามารถทำ string.format ("... {0} ... {0} ... {0}", System.Environment.NewLine), แต่ใน $ คุณต้องทำซ้ำ คุณไม่สามารถทำ $ "{0}" และส่งผ่านไปยัง string.format เนื่องจาก $ "{0}" ส่งคืน "0"
ในบันทึกด้านข้างฉันได้อ่านความคิดเห็นใน tpoic ที่ซ้ำกันอีกรายการ ฉันไม่สามารถแสดงความคิดเห็นดังนั้นที่นี่เป็น เขาพูดว่า
string msg = n + " sheep, " + m + " chickens";
สร้างวัตถุสตริงมากกว่าหนึ่งรายการ สิ่งนี้ไม่เป็นความจริง หากคุณทำสิ่งนี้ในบรรทัดเดียวมันจะสร้างเพียงหนึ่งสตริงและวางไว้ในแคชสตริง
1) string + string + string + string;
2) string.format()
3) stringBuilder.ToString()
4) $""
พวกเขาทั้งหมดส่งกลับสตริงและสร้างเพียงหนึ่งค่าในแคช
ในทางกลับกัน:
string+= string2;
string+= string2;
string+= string2;
string+= string2;
สร้าง 4 ค่าที่แตกต่างกันในแคชเนื่องจากมี 4 ";"
ดังนั้นจะเป็นการง่ายกว่าที่จะเขียนโค้ดดังต่อไปนี้ แต่คุณจะต้องสร้างสตริงที่สอดแทรกห้าบรรทัดเนื่องจาก Carlos Muñozแก้ไข:
string msg = $"Hello this is {myName}, " +
$"My phone number {myPhone}, " +
$"My email {myEmail}, " +
$"My address {myAddress}, and " +
$"My preference {myPreference}.";
สิ่งนี้จะสร้างสตริงเดียวในแคชในขณะที่คุณอ่านโค้ดได้ง่าย ฉันไม่แน่ใจเกี่ยวกับประสิทธิภาพการทำงาน แต่ฉันแน่ใจว่า MS จะปรับให้เหมาะสมถ้ายังไม่ได้ทำ