Barre oblique inverse et devis dans les arguments de ligne de commande

Est le comportement suivant une caractéristique ou d'un bug dans C# .NET?

Application de Test:

using System;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Arguments:");
            foreach (string arg in args)
            {
                Console.WriteLine(arg);
            }

            Console.WriteLine();
            Console.WriteLine("Command Line:");
            var clArgs = Environment.CommandLine.Split(' ');
            foreach (string arg in clArgs.Skip(clArgs.Length - args.Length))
            {
                Console.WriteLine(arg);
            }

            Console.ReadKey();
        }
    }
}

L'exécuter avec des arguments de ligne de commande:

a "b" "\\x\\" "\x\"

Dans le résultat je reçois:

Arguments:
a
b
\\x\
\x"

Command Line:
a
"b"
"\\x\\"
"\x\"

Il manque des barres obliques inverses et de la non-suppression de la citation dans les arguments passés à la méthode Main(). Est-ce la bonne solution sauf manuellement l'analyse Environment.CommandLine?

  • En général, il est beaucoup plus probable que c'est un bug dans votre code que d'un bug dans la langue.
  • S'il vous plaît trouver un bug dans le programme, les sources sont indiqués dans le post original. Je vais vraiment l'apprécier.
  • Il semble être une caractéristique: msdn.microsoft.com/en-us/library/... Si un guillemet double à la suite de deux ou d'un même nombre de barres obliques inverses, chaque instance de la barre oblique inverse paire est remplacé par une barre oblique inverse et le guillemet double est supprimé. Si un double guillemet suit un nombre impair de barres obliques inverses, dont l'un, précédent paire est remplacé par une barre oblique inverse et le reste de la barre oblique inverse est supprimé; toutefois, dans ce cas, les guillemets ne sont pas supprimés.