2009-05-22 5 views
2

Die gesamte Lösung baut in Visual Studio in Ordnung, aber wenn ich das Nant Skript ausführen, um die Website zu kompilieren wir mehrere Fehler auf dieser Linie erhalten:Warum hat der Compiler ein Problem mit dieser Codezeile?

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

ersten sagt Typ Erwartet, dann Syntaxfehler (Wert erwartet) ,) erwartet, ; erwartet, usw. Ich habe Zeilen wie diese zuvor im Projekt verwendet und es scheint sich nicht über diese zu beschweren.

Ich bin mir ziemlich sicher, dass der Fehler kommt von Split auf diese bedingte Anweisung aufrufen, aber ich bin mir nicht sicher warum.

+2

Ist es gut, lange, zusammengesetzte Aussagen wie diese zu haben? Meine (C++) Gewohnheit wäre, dies als drei oder vier separate Anweisungen (Codezeilen) zu schreiben und den Compiler zu optimieren, wenn es möglich ist und kann. – ChrisW

+0

Ich bin mir nicht sicher, ob es gut ist oder nicht, aber es wären wirklich zwei Aussagen. Eine, um die Zeichenfolge zu bestimmen, die geteilt werden muss, und eine, um sie tatsächlich zu teilen. Aber wenn ich das machen würde, würde ich ohne Grund einen String erstellen, da ich ihn nur einmal benutzen müsste. Vielleicht wäre es sowieso optimiert, aber die Leute, mit denen ich arbeite, bevorzugen dies, weil sie es für sauberer halten, wenn Sie keine Variablen erstellen, die Sie nicht benötigen. – Brandon

+1

@Brandon, ob Sie dieser Variablen einen Namen geben oder nicht, wird es noch existieren. Sie machen Ihren Code nicht schneller, indem Sie ihn weniger lesbar machen. In der Tat, wie schnell ist Ihr Code jetzt, wenn es nicht sogar kompilieren? Das ist ein Tiefschlag, aber es lohnt sich, darüber nachzudenken, wenn Sie oft auf diese Probleme stoßen. – Wedge

Antwort

8

schlage ich

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

Hinweis versuchen, dass new[] zu new char[] ging.

+1

Verfluchen Sie, ReSharper. Danke, das hat funktioniert. – Brandon

Verwandte Themen