ความแตกต่างระหว่างสองถ้ามี (ด้วยความเคารพ. สุทธิ) คืออะไร?
ความแตกต่างระหว่างสองถ้ามี (ด้วยความเคารพ. สุทธิ) คืออะไร?
คำตอบ:
ขึ้นอยู่กับแพลตฟอร์ม บน Windows เป็นจริง "\ r \ n"
จาก MSDN:
สตริงที่มี "\ r \ n" สำหรับแพลตฟอร์มที่ไม่ใช่ Unix หรือสตริงที่มี "\ n" สำหรับแพลตฟอร์ม Unix
Environment.NewLine
คือ\r\n
แต่\n
เรียกอีกอย่างว่า "บรรทัดใหม่" ทำไมพวกเขาถึงไม่โทรไปหาคนหลังด้วยชื่อที่รู้จักกันดีในชื่อ "ตัวดึงข้อมูลบรรทัด" และตัดความสับสนออกไป? พวกเขาสามารถใช้งานได้\l
เช่นกัน
การนำไปปฏิบัติที่แน่นอนEnvironment.NewLine
จากซอร์สโค้ด:
การใช้งานใน. NET 4.6.1:
/*===================================NewLine====================================
**Action: A property which returns the appropriate newline string for the given
** platform.
**Returns: \r\n on Win32.
**Arguments: None.
**Exceptions: None.
==============================================================================*/
public static String NewLine {
get {
Contract.Ensures(Contract.Result<String>() != null);
return "\r\n";
}
}
การใช้งานใน. NET Core:
/*===================================NewLine====================================
**Action: A property which returns the appropriate newline string for the
** given platform.
**Returns: \r\n on Win32.
**Arguments: None.
**Exceptions: None.
==============================================================================*/
public static String NewLine {
get {
Contract.Ensures(Contract.Result() != null);
#if !PLATFORM_UNIX
return "\r\n";
#else
return "\n";
#endif // !PLATFORM_UNIX
}
}
แหล่งที่มา (ในSystem.Private.CoreLib
)
public static string NewLine => "\r\n";
แหล่งที่มา (ในSystem.Runtime.Extensions
)
ดังที่คนอื่น ๆ พูดถึงEnvironment.NewLine
ส่งคืนสตริงเฉพาะแพลตฟอร์มสำหรับการเริ่มต้นบรรทัดใหม่ซึ่งควรเป็น:
"\r\n"
(\ u000D \ u000A) สำหรับ Windows"\n"
(\ u000A) สำหรับ Unix"\r"
(\ u000D) สำหรับ Mac (หากมีการใช้งานอยู่)โปรดทราบว่าเมื่อเขียนไปยังคอนโซล Environment.NewLine ไม่จำเป็นอย่างเคร่งครัด สตรีมคอนโซลจะแปล"\n"
เป็นลำดับบรรทัดใหม่ที่เหมาะสมหากจำเป็น
\n
Environment.NewLine
จะส่งคืนอักขระบรรทัดใหม่สำหรับแพลตฟอร์มที่สอดคล้องกันซึ่งรหัสของคุณกำลังทำงานอยู่
คุณจะพบว่ามีประโยชน์มากเมื่อคุณปรับใช้โค้ดของคุณใน linux บนกรอบงานโมโน
จากเอกสาร ...
สตริงที่มี "\ r \ n" สำหรับแพลตฟอร์มที่ไม่ใช่ Unix หรือสตริงที่มี "\ n" สำหรับแพลตฟอร์ม Unix
Environment.NewLine จะให้ "\ r \ n" เมื่อทำงานบน Windows หากคุณกำลังสร้างสตริงสำหรับสภาพแวดล้อมที่ใช้ Unix คุณไม่ต้องการ "\ r"
คุณอาจประสบปัญหาเมื่อพยายามแสดงข้อความหลายบรรทัดคั่นด้วย "\ r \ n"
เป็นวิธีปฏิบัติที่ดีเสมอในการทำสิ่งต่าง ๆ ในแบบมาตรฐานและใช้ Environment.NewLine