ใน PHP ฉันสามารถทำสิ่งต่อไปนี้:
$name = 'John';
$var = "Hello {$name}"; // => Hello John
มีโครงสร้างภาษาที่คล้ายกันใน C # หรือไม่?
ฉันรู้ว่ามีString.Format();แต่ฉันต้องการทราบว่าสามารถทำได้โดยไม่ต้องเรียกใช้ฟังก์ชัน / วิธีการบนสตริงหรือไม่
ใน PHP ฉันสามารถทำสิ่งต่อไปนี้:
$name = 'John';
$var = "Hello {$name}"; // => Hello John
มีโครงสร้างภาษาที่คล้ายกันใน C # หรือไม่?
ฉันรู้ว่ามีString.Format();แต่ฉันต้องการทราบว่าสามารถทำได้โดยไม่ต้องเรียกใช้ฟังก์ชัน / วิธีการบนสตริงหรือไม่
คำตอบ:
ใน C # 6 คุณสามารถใช้การแก้ไขสตริง :
string name = "John";
string result = $"Hello {name}";
การเน้นไวยากรณ์สำหรับสิ่งนี้ใน Visual Studio ทำให้สามารถอ่านได้สูงและมีการตรวจสอบโทเค็นทั้งหมด
ฟังก์ชันนี้ไม่ได้อยู่ใน C # 5 หรือต่ำกว่า
อัปเดต: C # 6 รองรับการแก้ไขสตริงแล้วดูคำตอบที่ใหม่กว่า
วิธีที่แนะนำในการทำเช่นนี้คือString.Format:
string name = "Scott";
string output = String.Format("Hello {0}", name);
อย่างไรก็ตามฉันเขียนไลบรารีโอเพ่นซอร์สขนาดเล็กที่เรียกว่าSmartFormatซึ่งขยายออกไปString.Formatเพื่อให้สามารถใช้ตัวยึดตำแหน่งที่มีชื่อ (ผ่านการสะท้อน) คุณสามารถทำได้:
string name = "Scott";
string output = Smart.Format("Hello {name}", new{name}); // Results in "Hello Scott".
หวังว่าคุณจะชอบมัน!
ใช้วิธีการดังต่อไปนี้
1: วิธีที่หนึ่ง
var count = 123;
var message = $"Rows count is: {count}";
2: วิธีที่สอง
var count = 123;
var message = "Rows count is:" + count;
3: วิธีที่สาม
var count = 123;
var message = string.Format("Rows count is:{0}", count);
4: วิธีที่สี่
var count = 123;
var message = @"Rows
count
is:{0}" + count;
5: วิธีที่ห้า
var count = 123;
var message = $@"Rows
count
is: {count}";
ถึง C # 5 (-VS2013) คุณต้องเรียกใช้ฟังก์ชัน / วิธีการสำหรับมัน ฟังก์ชัน "ปกติ" เช่นString.Formatหรือตัวดำเนินการ + ที่มากเกินไป
string str = "Hello " + name; // This calls an overload of operator +.
ในการแก้ไขสตริง C # 6 (VS2015) ได้รับการแนะนำ (ตามที่อธิบายโดยคำตอบอื่น ๆ )