Поиск

Ошибки периода компиляции

Когда компилятор, в том числе и компилятор С#, не может понять, что вы ему подсунули, он выводит сообщение об ошибке, и сборка вашего приложения прерывается. Введите следующий код в файл HelloErrors.cs и запустите компилятор:

using Syste;
class HelloErrors {
public static void Main() {
xConsole.WriteLine("Hello, World"); Console.Writel_inex("Hello, World"); } >
В результате компилятор выдаст следующее сообщение:
HelloErrors.cs(1,7): error CS0234: The type or namespace
name ' Syste' does not exist in the class or namespace "
(HelloErrors.cs(1,7): ошибка CS0234: Имя типа или пространства
имен ' Syste 1 не существует в данном классе или пространстве имен ")

Если учесть, что по умолчанию глобальное пространство имен имеется всегда, это сообщение говорит, что компилятор (по понятным причинам) не обнаружил ничего с именем Syste. Однако здесь нужно обратить внимание на то, что происходит, когда компилятор обнаруживает в коде синтаксические ошибки. Сначала выводится имя компилируемого в данный момент файла, за которым следуют номер строки и столбца позиции, в которую прокралась ошибка. Затем идет код ошибки — в данном случае, СS0234.

После кода ошибки дано ее краткое описание, которое помогает понять причину ошибки. Если же у вас остались вопросы, посмотрите дополнительные разъяснения в документации по .NET Framework SDK, которая устанавливается вместе c.NET Framework SDK. Оперативная справка, найденная по коду ошибки CS0234, выглядит так (рис. 3-3):

Обратите внимание на следующее обстоятельство. Хотя мы допустили в коде три ошибки (пространство имен System дано с ошибкой, неправильно указан класс Console и ошибка в написании метода WriteLine), компилятор сообщит только об одной из них. Дело в том, что некоторые ошибки вынуждают компилятор прервать процесс компиляции и вывести ошибки, накопленные к этому моменту. В данном случае компилятор останавливает свою работу из-за ошибки в директиве using, поскольку такая ошибка может стать причиной множества других. После того как вы правильно напишете имя System, компилятор доложит о местонахождении двух оставшихся ошибок.