2009-06-18 7 views

Répondre

148

Dépend de la plate-forme. Sous Windows, il s'agit en fait de "\ r \ n".

De MSDN:

Une chaîne contenant "\ r \ n" pour les plates-formes non-Unix, ou une chaîne contenant "\ n" pour les plates-formes Unix.

+5

Quelle plate-forme UNIX ne fonctionne .NET à Microsoft mis dans son doc? (Je veux dire, une partie de Mono.) – Jack

+6

@Jack Vous pourriez écrire dans un fichier qui sera ouvert dans la plate-forme Unix. Ou envoyer du texte dans un paquet qui sera reçu par une plate-forme Unix. Et dans quelques mois .net fonctionnera sur les plateformes Unix. Il a déjà commencé –

8

De l'docs ...

Une chaîne contenant "\ r \ n" pour les plates-formes non-Unix, ou une chaîne contenant "\ n" pour les plates-formes Unix.

+0

+1 pour le lien – JeffH

3

Environment.NewLine donnera "\ r \ n" lorsqu'il est exécuté sous Windows. Si vous générez des chaînes pour des environnements basés sur Unix, vous ne voulez pas le "\ r".

18

Environment.NewLine renverra le caractère de nouvelle ligne pour la plate-forme correspondante dans laquelle votre code est en cours d'exécution

vous trouverez cela très utile lorsque vous déployez votre code linux sur le Mono cadre

63

Comme d'autres l'ont mentionné, Environment.NewLine retourne une chaîne spécifique à la plateforme pour commencer une nouvelle ligne, qui devrait être:

  • "\r\n" (\ u000D \ u000A) pour Windows
  • "\n" (\ u000A) pour Unix
  • "\r" (\ u000D) pour Mac (si une telle mise en œuvre existait)

Notez que lors de l'écriture à la console, Environment.NewLine est pas strictement nécessaire. Le flux de la console convertira "\n" en séquence de nouvelle ligne appropriée, si nécessaire.

+0

L'implémentation Mac existe. Juste Mono. Fonctionne sur n'importe quoi. – Dykam

+14

Juste une note, ce serait vieux macs; les nouveaux macs (OSX) utilisent '\ n' –

+1

@Dykam, ouais mais ça tourne très lentement comme sur mon HP48gx – cod3monk3y

4

Vous pourriez avoir des problèmes lorsque vous essayez d'afficher un message multiligne séparé par "\ r \ n".

Il est toujours une bonne pratique de faire les choses d'une manière standard et utiliser Environment.NewLine

92

mise en œuvre exacte de Environment.NewLine à partir du code source:

La mise en œuvre dans .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"; 
    } 
} 

source


La mise en œuvre dans.NET de base:

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

source (en System.Private.CoreLib)

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

source (en System.Runtime.Extensions)

+11

Quelqu'un d'autre attendait-il un code aussi simple? : D – developerbmw

+4

Le code source ne ment jamais :) – aloisdg

+4

ouais :) Pour une raison quelconque, je m'attendais à ce que l'implémentation de .NET soit une énorme fonction compliquée – developerbmw

Questions connexes