195 votes

Différence entre " \n " et Environment.NewLine

Quelle est la différence entre les deux, le cas échéant (par rapport à .Net) ?

195voto

anthony Points 15067

Cela dépend de la plate-forme. Sous Windows, c'est en fait " \r\n ".

De MSDN :

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

147voto

aloisdg Points 1341

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

L'implémentation 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


L'implémentation dans .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
    }
}

source (en System.Private.CoreLib )

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

source (en System.Runtime.Extensions )

69voto

P Daddy Points 14228

Comme d'autres l'ont mentionné, Environment.NewLine renvoie une chaîne spécifique à la plate-forme pour le début d'une nouvelle ligne, qui devrait être :

  • "\r\n" ( \u000D\u000A ) pour Windows
  • "\n" ( \u000A ) pour Unix
  • "\r" ( \u000D ) pour Mac (si une telle implémentation existait)

Notez que lorsque vous écrivez dans la console, Environment.NewLine n'est pas strictement nécessaire. Le flux de la console traduira "\n" à la séquence de nouvelles lignes appropriée, si nécessaire.

22voto

Rony Points 6340

Environment.NewLine retournera le caractère de nouvelle ligne pour la plateforme correspondante sur laquelle votre code s'exécute.

vous trouverez cela très utile lorsque vous déployerez votre code sous linux sur la Mono cadre

8voto

JP Alioto Points 33482

De la docs ...

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X