web-dev-qa-db-fra.com

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

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

189
Prerak K

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 plateformes autres qu'Unix ou une chaîne contenant "\ n" pour les plateformes Unix.

189
anthony

Implémentation 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 (in System.Private.CoreLib)

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

source (in System.Runtime.Extensions)

143
aloisdg

Comme d'autres l'ont mentionné, Environment.NewLine renvoie une chaîne spécifique à la plate-forme 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 implémentation existait)

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

69
P Daddy

Environment.NewLine renverra le caractère de nouvelle ligne de la plate-forme correspondante sur laquelle votre code est exécuté

vous trouverez cela très utile lorsque vous déploierez votre code sous Linux sur le framework Mono

23
Rony

De la docs ...

Une chaîne contenant "\ r\n" pour les plateformes autres qu'Unix ou une chaîne contenant "\ n" pour les plateformes Unix.

8
JP Alioto

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

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

4
Yahya

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

4
Jeff Meatball Yang