2009-05-22 2 views
2

Весь раствора строит хорошо в Visual Studio, но когда я запускаю сценарий Nant скомпилировать сайт я получаю несколько ошибок в этой строке:Почему у компилятора есть проблемы с этой строкой кода?

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

Первого один говорит тип Прогнозируемый, то ошибка синтаксиса (значение ожидаемого) ,) ожидаемый; ожидаемый и т. д. Я использовал строки, подобные этому в проекте, и, похоже, не жалуется на них.

Я уверен, что ошибка возникает из вызова Split на этом условном утверждении, но я не уверен, почему.

+2

Хорошо ли иметь длинные сложные заявления, подобные этому? Моя (C++) привычка заключалась бы в том, чтобы написать это как три или четыре отдельных оператора (строки кода) и позволить компилятору оптимизировать его, если он может и хочет. – ChrisW

+0

Я не уверен, что это хорошо или нет, но на самом деле это было бы два утверждения. Один, чтобы определить строку, которая должна быть разделена, а другая - фактически разбить ее. Однако, если бы я это сделал, я бы создал строку без причины, так как мне нужно было использовать ее только один раз. Возможно, в любом случае это будет оптимизировано, но люди, с которыми я работаю, предпочитают это, поскольку они считают его более чистым, когда вы не делаете переменные, которые вам не нужны. – Brandon

+1

@Brandon, укажите ли вы эту переменную имя или нет, оно все равно будет существовать. Вы не делаете свой код быстрее, делая его менее читаемым. На самом деле, как быстро ваш код прямо сейчас, когда он даже не компилируется? Это низкий удар, но стоит подумать, часто ли вы сталкиваетесь с этими проблемами. – Wedge

ответ

8

Я предлагаю попробовать

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

Обратите внимание, что new[] пошел new char[].

+1

Проклятье, ReSharper. Спасибо, это сработало. – Brandon

 Смежные вопросы

  • Нет связанных вопросов^_^