2009-10-08 36 views
25

Có cách nào để tìm ra những gì .NET đang sử dụng làm "trình kết thúc dòng mặc định" của nó không? Ví dụ, tài liệu cho StringBuilder.AppendLine (String) cho biết nó "Gắn thêm một bản sao của chuỗi được chỉ định, sau đó là trình kết thúc dòng mặc định ...". Một số lớp liên quan đến văn bản trong .NET tham khảo cùng một khái niệm..NET "trình kết thúc dòng mặc định"?

Có cách nào để lập trình tìm ra những gì đang được sử dụng làm trình kết thúc dòng (lúc chạy) không? Hoặc là nó an toàn để giả định rằng nó sẽ luôn luôn là "\ r \ n" cho một máy Windows? Tôi không muốn mã hóa giá trị đó vào mã của tôi nếu tôi có thể tránh được nó.

Trả lời

40

StringBuilder.AppendLine sẽ sử dụng Environment.NewLine, là "\r\n" cho nền tảng không phải Unix và "\n" cho nền tảng Unix.

Nó sẽ luôn là "\r\n" cho máy Windows, nhưng bạn có thể sử dụng Environment.NewLine thay cho giá trị được mã hóa cứng.

nhờ @Guffa cho việc xác minh này

+1

Ah hoàn hảo, tôi biết phải có một cái gì đó như thế. Cảm ơn! –

+1

muốn có một cách để thay đổi terminator dòng mặc định cho một đối tượng StringBuilder cụ thể – Alex

17

Đây là mã từ phương pháp StringBuilder.AppendLine(string) (sử dụng .NET Reflector):

[ComVisible(false)] 
public StringBuilder AppendLine(string value) 
{ 
    this.Append(value); 
    return this.Append(Environment.NewLine); 
} 

Như bạn thấy, nó thực sự sử dụng Environment.NewLine tài sản.

2

Trên máy Mac, dòng mới là '\ r' cho đến khi chúng dựa trên hệ điều hành của chúng trên linux. Bây giờ là '\ n'.

+3

Chỉ cần một nit-pick nhỏ: hệ điều hành Mac ngày nay thực sự dựa trên UNIX, chứ không phải linux. Và phiên bản dựa trên UNIX đầu tiên xuất hiện vào đầu năm 2001, khoảng một năm trước khi .NET được phát hành. Vì vậy, ký hiệu '\ r' không có liên quan trong một thời gian. –

Các vấn đề liên quan