Полное руководство. С# 4.0 - Шилдт Герберт Страница 7
Полное руководство. С# 4.0 - Шилдт Герберт читать онлайн бесплатно
Перейдем к следующей строке программы.class Example {
В этой строке ключевое слово class служит для объявления вновь определяемого класса. Как упоминалось выше, класс является основной единицей инкапсуляциив С#, a Example — это имя класса. Определение класса начинается с открывающейфигурной скобки ({) и оканчивается закрывающей фигурной скобкой (}). Элементы,заключенные в эти фигурные скобки, являются членами класса. Не вдаваясь пока чтов подробности, достаточно сказать, что в C# большая часть действий, выполняемыхв программе, происходит именно в классе.
Следующая строка программы содержит однострочный комментарий.// Любая программа на C# начинается с вызова метода Main().
Это второй стиль комментариев, поддерживаемых в С#. Однострочный комментарий начинается и оканчивается символами //. Несмотря на различие стилей комментариев, программисты нередко пользуются многострочными комментариями дляболее длинных примечаний и однострочными комментариями для коротких, построчных примечаний к программе. (Третий стиль комментариев, поддерживаемых в С#,применяется при создании документации и описывается в приложении А.)Перейдем к анализу следующей строки программы.static void Main() {
Эта строка начинается с метода Main(). Как упоминалось выше, в C# подпрограмма называется методом. И, как поясняется в предшествующем комментарии, именнос этой строки начинается выполнение программы. Выполнение всех приложений C#начинается с вызова метода Main(). Разбирать полностью значение каждого элементаданной строки пока что не имеет смысла, потому что для этого нужно знать ряд другихсредств С#. Но поскольку данная строка используется во многих примерах программ,приведенных в этой книге, то проанализируем ее вкратце.
Данная строка начинается с ключевого слова static. Метод, определяемый ключевым словом static, может вызываться до создания объекта его класса. Необходимостьв этом объясняется тем, что метод Main() вызывается при запуске программы. Ключевое слово void указывает на то, что метод Main() не возвращает значение. В дальнейшем вы узнаете, что методы могут также возвращать значения. Пустые круглые скобки после имени метода Main означают, что этому методу не передается никакой информации. Теоретически методу Main() можно передать информацию, но в данномпримере этого не делается. И последним элементом анализируемой строки являетсясимвол {, обозначающий начало тела метода Main(). Весь код, составляющий телометода, находится между открывающими и закрывающими фигурными скобками.Рассмотрим следующую строку программы. Обратите внимание на то, что она находится внутри метода Main().Console.WriteLine("Простая программа на С#.");
В этой строке осуществляется вывод на экран текстовой строки "Простая программа на C#. Сам вывод выполняется встроенным методом WriteLine(). В данном примере метод WriteLine() выводит на экран строку, которая ему передается.Информация, передаваемая методу, называется аргументом. Помимо текстовых строк,метод WriteLine() позволяет выводить на экран другие виды информации. Анализируемая строка начинается с Console — имени предопределенного класса, поддерживающего ввод-вывод на консоль. Сочетание обозначений Console и WriteLine() указывает компилятору на то, что метод WriteLine() является членом класса Console.Применение в C# объекта для определения вывода на консоль служит еще одним свидетельством объектно-ориентированного характера этого языка программирования.Обратите внимание на то, что оператор, содержащий вызов метода WriteLine(),оканчивается точкой с запятой, как, впрочем, и рассматривавшаяся ранее директива using System. Как правило, операторы в C# оканчиваются точкой с запятой.Исключением из этого правила служат блоки, которые начинаются символом {и оканчиваются символом }. Именно поэтому строки программы с этими символамине оканчиваются точкой с запятой. Блоки обеспечивают механизм группирования операторов и рассматриваются далее в этой главе.
Первый символ } в анализируемой программе завершает метод Main(), а второй — определение класса Example.
И наконец, в C# различаются прописные и строчные буквы. Несоблюдение этогоправила может привести к серьезным осложнениям. Так, если вы неумышленно наберете main вместо Main или же writeline вместо WriteLine, анализируемая программа окажется ошибочной. Более того, компилятор C# не предоставит возможностьвыполнить классы, которые не содержат метод Main(), хотя и скомпилирует их. Поэтому если вы неверно наберете имя метода Main, то получите от компилятора сообщение об ошибке, уведомляющее о том, что в исполняемом файле Example.ехе неопределена точка входа.Обработка синтаксических ошибок
Если вы только начинаете изучать программирование, то вам следует научитьсяправильно истолковывать (и реагировать на) ошибки, которые могут появиться припопытке скомпилировать программу. Большинство ошибок компиляции возникаетв результате опечаток при наборе исходного текста программы. Все программистырано или поздно обнаруживают, что при наборе исходного текста программы оченьлегко сделать опечатку. Правда, если вы наберете что-нибудь неправильно, компилятор выдаст соответствующее сообщение о синтаксической ошибке при попытке скомпилировать вашу программу. В таком сообщении обычно указывается номер строки исходного текста программы, где была обнаружена ошибка, а также кратко описываетсяхарактер ошибки.
Несмотря на всю полезность сообщений о синтаксических ошибках, выдаваемыхкомпилятором, они иногда вводят в заблуждение. Ведь компилятор C# пытается извлечь какой-то смысл из исходного текста, как бы он ни был набран. Именно по этойпричине ошибка, о которой сообщает компилятор, не всегда отражает настоящуюпричину возникшего затруднения. Неумышленный пропуск открывающей фигурнойскобки после метода Main() в рассмотренном выше примере программы приводитк появлению приведенной ниже последовательности сообщений об ошибках прикомпиляции данной программы компилятором командной строки csc. (Аналогичные ошибки появляются при компиляции в интегрированной среде разработки VisualStudio.)EX1.CS(12, 21) : ошибка CS1002: ; ожидалосьЕХ1.CS(13, 22) : ошибка CS1519: Недопустимая лексема '(' вобъявлении члена класса, структуры или интерфейсаEX1.CS(15, 1) : ошибка CS1022: Требуется определение типаили пространства имен либо признак конца файла
Очевидно, что первое сообщение об ошибке нельзя считать верным, поскольку пропущена не точка с запятой, а фигурная скобка. Два других сообщения об ошибках вносят такую же путаницу.
Из всего изложенного выше следует, что если программа содержит синтаксическую ошибку, то сообщения компилятора не следует понимать буквально, посколькуони могут ввести в заблуждение. Для выявления истинной причины ошибки можетпотребоваться критический пересмотр сообщения об ошибке. Кроме того, полезнопроанализировать несколько строк кода, предшествующих той строке, в которой обнаружена сообщаемая ошибка. Иногда об ошибке сообщается лишь через несколькострок после того места, где она действительно произошла.Незначительное изменение программы
Несмотря на то что приведенная ниже строка указывается во всех примерах программ, рассматриваемых в этой книге, формально она не нужна.using System;
Тем не менее она указывается ради удобства. Эта строка не нужна потому, что в C#можно всегда полностью определить имя с помощью пространства имен, к которомуоно принадлежит. Например, строкуConsole.WriteLine("Простая программа на С#.");
можно переписать следующим образом.System.Console.WriteLine("Простая программа на С#.");
Таким образом, первый пример программы можно видоизменить так.// В эту версию не включена строка "using System;".class Example { // Любая программа на C# начинается с вызова метода Main(). static void Main() { // Здесь имя Console.WriteLine полностью определено. System.Console.WriteLine("Простая программа на С#."); }}
Указывать пространство имен System всякий раз, когда используется член этогопространства, — довольно утомительное занятие, и поэтому большинство программистов на C# вводят директиву using System в начале своих программ, как это сделано в примерах всех программ, приведенных в данной книге. Следует, однако, иметьв виду, что любое имя можно всегда определить, явно указав его пространство имен,если в этом есть необходимость.Вторая простая программа
Жалоба
Напишите нам, и мы в срочном порядке примем меры.