Выключатель. case var b, когда b.Contains("SomeString"): не компилируетсяC#

Место общения программистов C#
Ответить
Anonymous
 Выключатель. case var b, когда b.Contains("SomeString"): не компилируется

Сообщение Anonymous »

У меня есть веб-приложение, ориентированное на .Net 4.7, и в нем есть блок if/else, позволяющий проверить, содержит ли входящее сообщение определенную строку. Ужасно, но вместо этого я хотел использовать оператор переключения, как и в другом проекте, службе Windows, ориентированной на .Net 4.5.2, которая компилируется и работает:

Код: Выделить всё

switch (message)
{
case "SomeString":
...
break;

case var b when b.Contains("AnotherString"):  // problem line
....
break;
}
Но в рассматриваемом веб-приложении при сборке я получаю синтаксические ошибки, как будто я не использую C# 7.x, и все они указывают на:
case var b, когда b.Contains("AnotherString"):
строка:

Код: Выделить всё

Error   CS1002  ; expected
Error   CS1002  ; expected
Error   CS1003  Syntax error, ':' expected
Error   CS1513  } expected
Самое безумие в том, что служба Windows ориентирована на .Net 4.5.2, но если она принимает эту строку, она строится и запускается.
Google говорит, что ваша версия C# основана на том, что . Net-версия, на которую вы ориентируетесь.
Что за фигня?
Поддержал веб-приложение .Net 4.5.2 в том виде, в каком он есть в сервисном проекте, но это ничего не изменило.
Также изменил C# с «Последней основной версии» на 7.0, но получил другую ошибку, которая представляет собой целую группу кроличьих нор Google.
< strong>Обновить Я использую VS2017. Когда я добавляю 7 в свой .csproj или если я устанавливаю версию языка C# на 7 в графическом интерфейсе настроек сборки Visual Studio, я получите следующую ошибку:

Ошибка CS1617 Неверный параметр «7» для /langversion; должно быть ISO-1, ISO-2, «По умолчанию» или целое число в диапазоне от 1 до 6.

Это ошибка Google «кроличья нора», о которой я говорил, но не смог вспомнить или исправить.

Подробнее здесь: https://stackoverflow.com/questions/781 ... nt-compile
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»