“\ N” ve Çevre arasındaki fark.


Yanıtlar:


203

Platforma bağlıdır. Windows'da aslında "\ r \ n" dir.

MSDN'den:

Unix olmayan platformlar için "\ r \ n" içeren bir dize veya Unix platformları için "\ n" içeren bir dize.


5
.NET, Microsoft'a hangi UNIX platformunu çalıştırır? (Yani,
Jack

10
@Jack Unix platformunda açılacak bir dosyaya yazıyor olabilirsiniz. Veya bir unix platformu tarafından alınacak pakette metin göndermek. Ve birkaç ay içinde .net Unix platformlarında çalışacak. Çoktan başladı
John Demetriou

Dolayısıyla, sadece netlik için: olmayan bir Unix platformu üzerinde Environment.NewLineolduğunu \r\nancak \naynı zamanda "yeni satır" denir. Neden ikincisini daha iyi bilinen "satır besleme" adıyla çağırıp karışıklığı kestiler? Onlar \lda kullanabilirdi.
rory.ap

157

Environment.NewLineKaynak kodundan tam olarak uygulanması :

.NET 4.6.1'deki uygulama:

/*===================================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";
    }
}

kaynak


.NET Core'daki uygulama:

/*===================================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
    }
}

kaynak (in System.Private.CoreLib)

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

kaynak (in System.Runtime.Extensions)


10
evet :) Bazı nedenlerden dolayı .NET uygulamasının bazı büyük karmaşık işlev olmasını bekliyordum
developerbmw

Bu örnekte kaynağın sadeliği göz önüne alındığında, muhtemelen cevap olmalıdır.
Chris Walter

70

Diğerlerinin de belirttiği gibi, Environment.NewLineyeni bir satır başlatmak için platforma özgü bir dize döndürür;

  • "\r\n" (\ u000D \ u000A) Windows için
  • "\n" (\ u000A) Unix için
  • "\r" (\ u000D) Mac için (böyle bir uygulama varsa)

Konsola yazarken, Environment.NewLine uygulamasının kesinlikle gerekli olmadığını unutmayın. Konsol akışı "\n", gerekirse uygun yeni satır sırasına çevrilir .


Mac uygulaması mevcut. Sadece Mono. Herhangi bir şey üzerinde çalışır.
Dykam

24
Sadece bir not, bu eski mac'lar olurdu; yeni (OSX) \n
mac'lar

2
@Dykam, evet ama HP48gx'imde çok yavaş çalışıyor
cod3monk3y

1
Diğerlerinin de belirttiği ve bu soruna eklenmiş .Net kaynağında görüldüğü gibi, bu cevap doğru değildir.
Chris Walter

2
@Blieque sadece 2009'da doğru olabileceğini söylüyor, öyle değil. Kontrol etmedim.
aloisdg taşınma codidact.com

23

Environment.NewLine kodunuzun çalıştığı ilgili platformun yeni satır karakterini döndürür

Mono çerçevesindeki linux'ta kodunuzu dağıtırken bunu çok yararlı bulacaksınız


8

Gönderen docs ...

Unix olmayan platformlar için "\ r \ n" içeren bir dize veya Unix platformları için "\ n" içeren bir dize.


4

Environment.NewLine, Windows üzerinde çalıştırıldığında "\ r \ n" verecektir. Unix tabanlı ortamlar için dizeler oluşturuyorsanız, "\ r" istemezsiniz.


4

"\ R \ n" ile ayrılmış çok satırlı mesajı görüntülemeye çalıştığınızda sorun yaşayabilirsiniz.

İşleri standart bir şekilde yapmak ve Çevre kullanmak her zaman iyi bir uygulamadır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.