“\ 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.