Perbedaan antara "\ n" dan Lingkungan.NewLine


Jawaban:


203

Tergantung pada platform. Di Windows sebenarnya "\ r \ n".

Dari MSDN:

String yang berisi "\ r \ n" untuk platform non-Unix, atau string yang berisi "\ n" untuk platform Unix.


5
Platform UNIX mana .NET yang dijalankan oleh Microsoft dimasukkan ke dalam dokumen? (Maksud saya, bagian dari Mono.)
Jack

10
@Jack Anda bisa menulis ke file yang akan dibuka di platform Unix. Atau mengirim teks dalam paket yang akan diterima oleh platform unix. Dan dalam beberapa bulan .net akan berjalan pada platform Unix. Sudah dimulai
John Demetriou

Jadi hanya untuk kejelasan: pada platform non-Unix Environment.NewLineadalah \r\ntetapi \njuga disebut "baris baru". Mengapa mereka tidak memanggil yang terakhir dengan nama yang lebih dikenal sebagai "umpan garis" dan memotong kebingungan? Mereka bisa menggunakannya \ljuga.
rory.ap

157

Implementasi yang tepat dari Environment.NewLinedari kode sumber:

Implementasi di .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";
    }
}

sumber


Implementasi dalam .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
    }
}

sumber (dalam System.Private.CoreLib)

public static string NewLine => "\r\n";

sumber (dalam System.Runtime.Extensions)


10
yeah :) Untuk beberapa alasan saya mengharapkan implementasi .NET menjadi beberapa fungsi rumit yang besar
developerbmw

Mempertimbangkan kesederhanaan sumber dalam hal ini, mungkin itu harus menjadi jawabannya.
Chris Walter

70

Seperti yang disebutkan orang lain, Environment.NewLinemengembalikan string khusus platform untuk memulai baris baru, yang seharusnya:

  • "\r\n" (\ u000D \ u000A) untuk Windows
  • "\n" (\ u000A) untuk Unix
  • "\r" (\ u000D) untuk Mac (jika implementasi seperti itu ada)

Perhatikan bahwa saat menulis ke konsol, Environment.NewLine tidak sepenuhnya diperlukan. Aliran konsol akan menerjemahkan "\n"ke urutan baris baru yang sesuai, jika perlu.


Implementasi Mac memang ada. Hanya Mono. Berjalan pada apa saja.
Dykam

24
Hanya sebuah catatan, itu akan menjadi mac lama; Mac (OSX) baru digunakan\n
BlueRaja - Danny Pflughoeft

2
@Dykam, ya tapi itu berjalan sangat lambat seperti pada HP48gx saya
cod3monk3y

1
Seperti yang telah disebutkan orang lain dan seperti terlihat dalam sumber .Net juga terlampir pada pertanyaan ini, jawaban ini tidak benar.
Chris Walter

2
@Blieque hanya mengatakan bahwa itu mungkin benar pada tahun 2009, bukan itu. Saya tidak memeriksa.
aloisdg pindah ke codidact.com

23

Environment.NewLine akan mengembalikan karakter baris baru untuk platform terkait di mana kode Anda berjalan

Anda akan menemukan ini sangat berguna ketika Anda menggunakan kode Anda di linux pada kerangka Mono


8

Dari dokumen ...

String yang berisi "\ r \ n" untuk platform non-Unix, atau string yang berisi "\ n" untuk platform Unix.


4

Environment.NewLine akan memberikan "\ r \ n" saat dijalankan di Windows. Jika Anda membuat string untuk lingkungan berbasis Unix, Anda tidak ingin "\ r".


4

Anda mungkin mendapat masalah ketika Anda mencoba untuk menampilkan pesan multi-line yang dipisahkan dengan "\ r \ n".

Itu selalu merupakan praktik yang baik untuk melakukan hal-hal dengan cara standar, dan menggunakan Lingkungan

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.