Простая программа на C#
Давайте создадим новое консольное приложение в среде Visual Studio 2010 и наберем следующий код:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { // Форматируем шапку программы Console.BackgroundColor = ConsoleColor.Green; Console.ForegroundColor = ConsoleColor.Black; Console.WriteLine("********************"); Console.WriteLine("**** Мой проект ****"); Console.WriteLine("********************"); // Основная программа Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(); Console.WriteLine("Hello, World!"); // Ожидание нажатия клавиши Enter перед завершением работы Console.ReadLine(); } } }
В результате получилось определение типа класса, поддерживающее единственный метод по имени Main(). По умолчанию классу, в котором определяется метод Main(), в Visual Studio 2010 назначается имя Program; при желании это имя легко изменить. Класс, определяющий метод Main(), должен обязательно присутствовать в каждом исполняемом приложении на C# (будь то консольная программа, настольная программа для Windows или служба Windows), поскольку он применяется для обозначения точки входа в приложение.
Чтобы посмотреть результат работы данного приложения на этапе отладки, в программной среде Visual Studio 2010 необходимо нажать кнопку "Начать отладку" или нажать <F5>. Результатом отладки этого приложения будет консольное окно следующего вида:
Давайте проанализируем данную программу более подробно, начиная с ее имени.
В отличие от ряда других языков программирования, и в особенности Java, где имя файла программы имеет большое значение, имя программы на C# может быть произвольным. Visual Studio по умолчанию задает имя Program.cs, при этом в C# файл с исходным текстом этой программы можно было бы назвать как угодно. Например, его можно было назвать Sample.cs, Test.cs или даже X.cs.
Обратите внимание, что в файлах с исходным текстом программ на C# условно принято расширение .cs, и это условие вы должны соблюдать. Кроме того, многие программисты называют файлы с исходным текстом своих программ по имени основного класса, определенного в программе.
Рассмотрим первую строку программы:
using System;
Эта строка означает, что в программе используется пространство имен System. В C# пространство имен определяет область объявлений. Благодаря пространству имен одно множество имен отделяется от других. По существу, имена, объявляемые в одном пространстве имен, не вступают в конфликт с именами, объявляемыми в другом пространстве имен. В анализируемой программе используется пространство имен System, которое зарезервировано для элементов, связанных с библиотекой классов среды .NET Framework, применяемой в C#. Ключевое слово using просто констатирует тот факт, что в программе используются имена в заданном пространстве имен. (Попутно обратим внимание на весьма любопытную возможность создавать собственные пространства имен, что особенно полезно для работы над крупными проектами.)
Хочу обратить ваше внимание, что использование данной строки в программе не обязательно, т.к. в C# можно всегда полностью определить имя с помощью пространства имен, к которому оно принадлежит. Например, строку
Console.WriteLine("Hello, World!");
можно переписать следующим образом
System.Console.WriteLine("Hello, World!");
Однако указывать пространство имен System всякий раз, когда используется член этого пространства, — довольно утомительное занятие, и поэтому большинство программистов на C# вводят директиву using System в начале своих программ. Следует, однако, иметь в виду, что любое имя можно всегда определить, явно указав его пространство имен, если в этом есть необходимость.
С помощью ключевого слова namespace объявляется пространство имен, с которым должен быть ассоциирован класс. Весь код в последующих фигурных скобках рассматривается как принадлежащий этому пространству имен. Оператор using специфицирует пространство имен, которое должен просматривать компилятор в поисках классов, упомянутых в коде, но не определенных в текущем пространстве имен. Это служит тем же целям, что оператор import в Java и using namespace в С++.
Перейдем к следующей строке программы:
class Program
В этой строке ключевое слово class служит для объявления вновь определяемого класса. Класс является основной единицей инкапсуляции в C#, a Program — это имя класса. Определение класса начинается с открывающей фигурной скобки "{" и оканчивается закрывающей фигурной скобкой "}". Элементы, заключенные в эти фигурные скобки, являются членами класса. Не вдаваясь пока что в подробности, достаточно сказать, что в C# большая часть действий, выполняемых в программе, происходит именно в классе.
Метод Main(), как уже говорилось, является точкой входа в программу. Формально класс, в котором определяется метод Main(), называется объектом приложения. Хотя в одном исполняемом приложении допускается иметь более одного такого объекта (это может быть удобно при проведении модульного тестирования), при этом обязательно необходимо информировать компилятор о том, какой из методов Main() должен использоваться в качестве входной точки. Для этого нужно либо указать опцию main в командной строке, либо выбрать соответствующий вариант в раскрывающемся списке на вкладке Application (Приложение) окна редактора свойств проекта в Visual Studio 2010.
Обратите внимание, что в сигнатуре метода Main() присутствует ключевое слово static. Oбласть действия статических (static) членов охватывает уровень всего класса (а не уровень отдельного объекта) и потому они могут вызываться без предварительного создания нового экземпляра класса.
Внутри метода Main() используется несколько встроенных методов предопределенного класса Console, в частности BackgroundColor - задает цвет фона, ForegroundColor - задает цвет контента (в нашем случае текста), WriteLine() - выводит на экран строку и ReadLine() - считывает данные из консоли.
Последним, немаловажным элементом являются комментарии, подробно расписанные в следующей статье.
Комментарии