2009-05-22 6 views
2

La solution complète se construit bien dans Visual Studio, mais quand je lance le script Nant pour compiler le site je reçois plusieurs erreurs sur cette ligne:Pourquoi le compilateur a-t-il un problème avec cette ligne de code?

string[] qs = (Request.QueryString["e"] ?? String.Empty) 
       .Split(new[] { '?' }, StringSplitOptions.RemoveEmptyEntries); 

premier dit type attendu, puis Erreur de syntaxe (valeur attendue) ,) attendu, attendu, etc. J'ai déjà utilisé des lignes comme ça dans le projet et ça ne semble pas se plaindre sur celles-ci.

Je suis assez sûr que l'erreur provient d'appeler Split sur cette instruction conditionnelle, mais je ne sais pas pourquoi.

+2

Est-il bon d'avoir de longues instructions composées comme celle-ci? Mon habitude (C++) serait d'écrire cela comme trois ou quatre instructions séparées (lignes de code), et laissez le compilateur l'optimiser s'il le peut et veut. – ChrisW

+0

Je ne suis pas sûr que ce soit bon ou pas, mais vraiment ce serait deux déclarations. Un pour déterminer la chaîne qui doit être divisée, et un autre pour le diviser. Cependant, si je faisais cela, je créerais une chaîne sans raison puisque je n'aurais besoin de l'utiliser qu'une seule fois. Peut-être que ce serait optimisé de toute façon, mais les gens avec qui je travaille préfèrent cela car ils le considèrent plus propre quand vous ne faites pas de variables dont vous n'avez pas besoin. – Brandon

+1

@Brandon, que vous donniez ou non un nom à cette variable, elle existera toujours. Vous ne faites pas votre code plus rapidement en le rendant moins lisible. En fait, à quelle vitesse votre code est-il en ce moment même s'il ne compile pas? C'est un coup bas, mais cela vaut la peine de penser si vous rencontrez souvent ces problèmes. – Wedge

Répondre

8

Je suggère d'essayer

string[] qs = (Request.QueryString["e"] ?? String.Empty) 
    .Split(new char[] { '?' }, StringSplitOptions.RemoveEmptyEntries); 

Notez que new[] est allé à new char[].

+1

Malédiction, ReSharper. Merci, ça a marché. – Brandon

Questions connexes