В чем разница между "синтаксической ошибкой" и "ошибкой компилятора", как это видит Visual Studio? Или, по-другому, почему некоторые ошибки "компиляции" подчеркиваются красными волнистыми линиями, а некоторые с синими волнистыми линиями? Вот пример:
Красная подчеркнутая ошибка выше имеет это описание:
Нет перегрузки для метода "ValidateFilteredRecipient" принимает 6 аргументов
Синяя подчеркнутая ошибка имеет это описание:
'ValidateBuild': не может объявлять члены экземпляра в статическом классе
Мне непонятно, каковы отличительные характеристики двух ошибок.
Я думал, что найти ответ будет кусок пирога: я бы просто сделал его, и первым результатом будет страница MSDN, полностью излагающая эту тему; однако, очень удивительно, это было не так. Я начал с того, что пытался использовать Google цвета (поскольку я еще не знал, что красный означает "синтаксическая ошибка", а синий означает "ошибка компилятора" ):
визуальная студия красного подчеркивания против синего подчеркивания
Никакой помощи нет. Затем я попробовал эти поиски:
визуальная ошибка студии подчеркивает цветовые значения
визуальная студия подчеркивает цветовые значения
Я мог видеть, что это никуда не годилось, поэтому я немного искал googled и выяснил, где были установлены цвета в VS: Инструменты > Параметры > Средa > Шрифты и цвета. Кстати, невозможность поиска огромного списка здесь крайне раздражает, но я понял, что "синтаксические ошибки" имеют красную волнистую подчеркивание, а "ошибки компилятора" имеют синюю волнистую подчеркивание.
Так что это значит? Вернуться в Google:
ошибка компилятора Visual Studio и ошибка синтаксиса
Ничего существенного. Вот ближайший я нашел от MSDN:
Диалоговое окно "Шрифты и цвета" , "Окружающая среда, параметры"
У этой страницы есть следующие данные:
Ошибка компилятора - синие squiggles в редакторе, указывающие на ошибку компилятора.
и
Синтаксическая ошибка - ошибки анализа.
Совсем не полезно - акцент на "вообще". Я всегда думал, что знаю, что "синтаксическая ошибка" была, по крайней мере, и Wikipedia соглашается:
синтаксическая ошибка - это ошибка в синтаксисе последовательности символов или жетоны, которые предназначены для написания в конкретном программировании язык.
Кроме того, вот что он имеет для синтаксиса:
синтаксис языка компьютера - это набор правил, который определяет комбинации символов, которые считаются правильными структурированный документ или фрагмент на этом языке.
Итак, вернемся к моей "синтаксической ошибке" сверху:
Нет перегрузки для метода "ValidateFilteredRecipient" принимает 6 аргументов
Как это синтаксическая ошибка в определении, которое я здесь включил? На самом деле, на мой взгляд, "ошибка компилятора", которую я получил более точно, соответствует этому определению синтаксической ошибки:
'ValidateBuild': не может объявлять члены экземпляра в статическом классе
Кто-нибудь может помочь мне понять это?