Ошибка синтаксиса в сравнении с ошибкой компилятора в Visual Studio или красная волнистая подчеркивание против синего волнистого подчеркивания

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

enter image description here

Красная подчеркнутая ошибка выше имеет это описание:

Нет перегрузки для метода "ValidateFilteredRecipient" принимает 6 аргументов

Синяя подчеркнутая ошибка имеет это описание:

'ValidateBuild': не может объявлять члены экземпляра в статическом классе

Мне непонятно, каковы отличительные характеристики двух ошибок.

Я думал, что найти ответ будет кусок пирога: я бы просто сделал его, и первым результатом будет страница MSDN, полностью излагающая эту тему; однако, очень удивительно, это было не так. Я начал с того, что пытался использовать Google цвета (поскольку я еще не знал, что красный означает "синтаксическая ошибка", а синий означает "ошибка компилятора" ):

визуальная студия красного подчеркивания против синего подчеркивания

Никакой помощи нет. Затем я попробовал эти поиски:

визуальная ошибка студии подчеркивает цветовые значения
визуальная студия подчеркивает цветовые значения

Я мог видеть, что это никуда не годилось, поэтому я немного искал googled и выяснил, где были установлены цвета в VS: Инструменты > Параметры > Средa > Шрифты и цвета. Кстати, невозможность поиска огромного списка здесь крайне раздражает, но я понял, что "синтаксические ошибки" имеют красную волнистую подчеркивание, а "ошибки компилятора" имеют синюю волнистую подчеркивание.

enter image description here

Так что это значит? Вернуться в Google:

ошибка компилятора Visual Studio и ошибка синтаксиса

Ничего существенного. Вот ближайший я нашел от MSDN:

Диалоговое окно "Шрифты и цвета" , "Окружающая среда, параметры"

У этой страницы есть следующие данные:

Ошибка компилятора - синие squiggles в редакторе, указывающие на ошибку компилятора.

и

Синтаксическая ошибка - ошибки анализа.

Совсем не полезно - акцент на "вообще". Я всегда думал, что знаю, что "синтаксическая ошибка" была, по крайней мере, и Wikipedia соглашается:

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

Кроме того, вот что он имеет для синтаксиса:

синтаксис языка компьютера - это набор правил, который определяет комбинации символов, которые считаются правильными структурированный документ или фрагмент на этом языке.

Итак, вернемся к моей "синтаксической ошибке" сверху:

Нет перегрузки для метода "ValidateFilteredRecipient" принимает 6 аргументов

Как это синтаксическая ошибка в определении, которое я здесь включил? На самом деле, на мой взгляд, "ошибка компилятора", которую я получил более точно, соответствует этому определению синтаксической ошибки:

'ValidateBuild': не может объявлять члены экземпляра в статическом классе

Кто-нибудь может помочь мне понять это?

Ответ 1

Ключевое различие между синтаксической ошибкой и ошибкой компиляции - это когда Visual Studio обнаруживает ее.

Синтаксическая ошибка обнаруживается и подсвечивается при кодировании. Вам не нужно создавать код для получения этих ошибок.

Однако ошибки компиляции сложны, что редактор не может обнаружить, как вы код. Вам нужно будет запустить его через компилятор (сделать сборку), чтобы идентифицировать их. Таким образом, шансы на то, что в конечном итоге можно продолжить кодирование без компиляции и не смогут обнаружить их до тех пор, пока он не построит.

В основном, ошибки синтаксиса являются подмножеством ошибок компиляции. Если вы используете текстовый редактор, например блокнот, для написания кода, вы никогда не увидите синтаксическую ошибку. Все будут регистрироваться как ошибки компиляции при запуске кода через компилятор.

Что касается выделения их по-разному, я думаю, что это визуальное представление для Разработчика, чтобы понять, что он мог поймать при написании кода.

Как уже упоминалось всеми, в конце дня вам нужно исправить оба, чтобы сделать код запущенным.

Это верно для любого языка программирования и редактора, используемого вместе с этим языком.

Ответ 2

Ошибки синтаксиса и компилятора будут препятствовать компиляции вашего кода.

Синтаксис Ошибки относятся к тому, как ваш код взаимодействует с другими фрагментами кода. Такие вещи, как несоответствие типов при передаче параметров функциям и т.д.

Ошибки компилятора, с другой стороны, относятся к более фундаментальным архитектурным нарушениям, таким как попытка наследовать от закрытых классов или определять нестатические элементы внутри статических классов. Это противоречит определению языка, а не использованию языка.