Câu trả lời:
Phụ thuộc vào nền tảng. Trên Windows, nó thực sự là "\ r \ n".
Từ MSDN:
Một chuỗi chứa "\ r \ n" cho các nền tảng không phải là Unix hoặc một chuỗi chứa "\ n" cho các nền tảng Unix.
Environment.NewLine
là \r\n
nhưng \n
cũng được gọi là "dòng sản phẩm mới". Tại sao họ không gọi cái sau bằng cái tên nổi tiếng hơn là "line feed" và loại bỏ sự nhầm lẫn? Họ cũng có thể đã sử dụng \l
.
Thực hiện chính xác Environment.NewLine
từ mã nguồn:
Việc triển khai trong .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";
}
}
Việc triển khai trong .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
}
}
nguồn (trong System.Private.CoreLib
)
public static string NewLine => "\r\n";
nguồn (trong System.Runtime.Extensions
)
Như những người khác đã đề cập, Environment.NewLine
trả về một chuỗi dành riêng cho nền tảng để bắt đầu một dòng mới, đó là:
"\r\n"
(\ u000D \ u000A) cho Windows"\n"
(\ u000A) cho Unix"\r"
(\ u000D) cho Mac (nếu có triển khai như vậy)Lưu ý rằng khi viết lên bàn điều khiển, Môi trường.NewLine không thực sự cần thiết. Luồng điều khiển sẽ dịch "\n"
sang trình tự dòng mới thích hợp, nếu cần.
\n
Môi trường.NewLine sẽ cho "\ r \ n" khi chạy trên Windows. Nếu bạn đang tạo chuỗi cho môi trường dựa trên Unix, bạn không muốn "\ r".