Pourquoi Environment.NewLine = "\ r \ n" lorsque "\ n" dans un littéral de chaîne fonctionne de la même manière?
En C# si vous faites quelque chose comme string newLine = Environment.NewLine;
et inspecter la valeur de newLine
vous trouverez qu'il est "\r\n"
. Cependant, si je fais quelque chose comme;
string[] test = new string[] { "one", "two", "three" };
Console.WriteLine("With plain slash n:");
Console.Write(String.Join("\n", test));
Console.WriteLine("\nWith Environment.NewLine:");
Console.Write(String.Join(Environment.NewLine, test));
La sortie est fonctionnellement identique.
Pourquoi est Environment.NewLine
ensemble de \r\n
au lieu de simplement \n
? N'est-ce pas tout simplement le rendre plus difficile pour convertir la chaîne de caractères tableau? Aussi j'ai lu quelque chose qui m'a conduit à croire certains champs de saisie ne comptent pas Environment.NewLine
comme deux caractères qui pourraient causer des problèmes si votre champs de sauvegarde sont limités à la longueur du champ de saisie. Existe-il des raisons positives pour elle? C'est juste de l'héritage trucs à ce point?
source d'informationauteur evanmcdonnal
Vous devez vous connecter pour publier un commentaire.
Le point de l'Environnement.De retour à la ligne est de retour le caractère de saut de ligne pour la plate-forme. Sans doute pour les implémentations de l' .NET framework sommet de Linux ou Unix, il serait de retour \n.
"Nouvelle ligne" dans windows/dos est, par convention, CR+LF (
"\r\n"
"\x0D\x0A"). Dans le monde *nix, "nouvelle ligne" est, par convention, un seul caractère LF ("\n","\0"). Dans le pré-OS X Macintosh monde, "nouvelle ligne" est, par convention, un seul caractère LF ("\r","\x0D"). Mélanger les mainframes IBM dans le mélange et le pire: EBCDIC caractère de contrôle se compose des CR, LF et spécifique NL caractère de contrôle.La raison pour cela est historique et a à voir avec le fait que l'ASCII n'a pas une réelle NL (nouvelle ligne) caractère de contrôle: il suffit de CR (retour chariot) et LF (saut de ligne). Les différents Systèmes d'exploitation ont été développés avec les différents terminaux d'impression, et de leur interprétation de la signification de ces caractères de contrôle, sur laquelle les différents systèmes d'exploitation ont été développés et que vous avez votre retour à la ligne schisme.
Le CLR I/O système essaie de suivre Postel du Droit ("Être généreux dans ce que vous acceptez et strict dans ce que vous émettez") et c'est agnostique sur l'entrée WRT nouvelle ligne de conventions. Par conséquent, la norme CLR
TextReader
implémentations accepter tout de CR+LF, CR ou LF comme constituant un nouvel indicateur de ligne. Cependant, sur la sortie,WriteLine()
par défaut, ajoute la valeur de `Environnement.De retour à la ligne'.DOS et Windows, utilisez la combinaison de retour chariot (\u000D) + saut de Ligne (retour a la ligne \n \u000A) pour représenter une seule nouvelle ligne. Différents platoforms avoir des paramètres différents (voir: Wiki-Saut De Ligne). Donc, C# est la norme pour Windows et DOS comme prévu lorsqu'une application est exécutée dans Windows.