Основы синтаксиса
Особенности синтаксиса C#
Давайте рассмотрим основы синтаксиса на примере создания класса. Как я уже говорил, C# относится к объектно-ориентированным языка программирования. А согласно методологии ООП (объектно ориентированного программирования), программа состоит из множества различных объектов (а объекты, в свою очередь, являются экземплярами классов), которые взаимодействуют между собой по средствам определенных действий (операций). Действия, которые может выполнять объект, называют методами. Ну а теперь, давайте перейдем к примеру!
А примером будут являться объекты класса, описывающего прямоугольник. Чтобы описать прямоугольник, нужно иметь как минимум два параметра, это его длина и ширина. Объекты создаваемого класса будут иметь методы, позволяющие задавать эти параметры, а также, возвращать их и другие, уже производные параметры, например, автоматически рассчитываемую площадь. Взглянем на следующий код:
using System; namespace BasicSyntax { //Класс, описывающий прямоугольник class Rectangle { //Метод, задающий параметрам объекта определенные значения public void SetParams() { length = 4; width = 3; } //Метод, возвращающий вычисленную по длине и ширине площадь public double GetArea() { return length * width; } //Метод, возвращающий описание объекта public void Display() { Console.WriteLine("Length: {0}", length); Console.WriteLine("Width: {0}", width); Console.WriteLine("Area: {0}", GetArea()); } //Поля класса private double length; private double width; } class Program { static void Main(string[] args) { //Создание объекта Rectangle someRect = new Rectangle(); //Задать задать значения длине и ширине прямоугольника someRect.SetParams(); //Вывод информации о прямоугольнике someRect.Display(); //Чтобы программа не закрылась раньше времени Console.ReadLine(); } } }
В приведенном выше примере, описывается класс Rectangle, и создается, для дальнейшего использования, объект этого класса. А теперь, давайте вернемся к синтаксису C#!
Ключевые слова
В первой же строчке, мы подключаем пространство имен System. Для этого, мы используем ключевое слово using, т.е. пишем:
using System;
Понятие ключевое слово, означает, что данное слово зарезервировано в C#, и мы не можем его использовать для названий создаваемых нами сущностей (классов, пространств имен, переменных, и т.п.). Вот список ключевых слов в C#: abstract, as, base, bool, break, byte, case, catch, char, checked, class, const, continue, decimal, default, delegate, do, double, else, enum, event, explicit, extern, false, finally, fixed, float, for, foreach, goto, if, implicit, in, int, interface, internal, is, lock, long, namespace, new, null, object, operator, out, override, params, private, protected, public, readonly, ref, return, sbyte, sealed, short, sizeof, stackalloc, static, string, struct, switch, this, throw, true, try, typeof, uint, ulong, unchecked, unsafe, ushort, using, virtual, void, volatile, while.
Каждое ключевое слово имеет свой смысл, который даже может зависеть от контекста использования. Ключевые слова в примере кода, приведенном выше, выделены жирным шрифтом.
Блоки кода и идентификаторы
Как правило, любая C# программа осознано разделяется программистом на отдельные составляющие, так называемые блоки кода. Блок кода имеет свои границы, которые показывают где его начало и где завершение. Блок кода, может быть как «самостоятельным», так и относящимся к какой-то сущности, например, классу, методу, пространству имен и т.д. Любой блок кода является неким контейнером, который создает локальную область видимости. Это значит, что в создавая блок кода, мы можем оградить его содержимое от внешних вмешательств и различных конфликтов. Но об этом узнаете подробнее по мере прохождения курса.
И так, в C# границы блока кода обозначаются фигурными скобками. Начало блока открывающей, т.е. «{«, а конец — закрывающей, т.е. «}». Например, блок кода относящийся к пространству имен с название «SomeNamespace» может выглядеть так:
//Пространство имен с названием SomeNamespace namespace SomeNamespace { //Начало SomeNamespace } //Конец SomeNamespace
Как видите, мы только что определили блок кода с четко определенными границами. И в данном случае, блок кода относится к пространству имен, которое имеет название «SomeNamespace«, а это название как раз и является идентификатором. Идентификаторы имеют пространства имен, классы, методы, поля классов, различные переменные и константы (о которых мы поговорим чуть позже), а так же, другие сущности программ.
Обратите внимание, что все идентификаторы должны быть уникальными, это означает, что название класса не может совпадать с названием пространства имен в котором оно находится или с названием какого-нибудь объекта из того же пространства имен, и т.п.
Комментарии
В коде программы почти всегда присутствуют комментарии разработчика. Комментарии нужны для пояснений особенностей алгоритма, предназначения каких-то сущностей программы, т.е. для любых пояснений, напоминаний и т.п. Комментарии никак не влияют на работу программы, они нужны лишь для человека, который будет сопровождать код. В C# есть два типа комментариев, однострочные (начинаются определенной комбинацией символов в любом месте строки и заканчиваются автоматически, вместе со строкой кода) и многострочные (начинаются и заканчиваются определенными комбинациями символов). Вот пример комментариев в C#:
//Это однострочный комментарий /*А это - многострочный комментарий*/
Как нетрудно заметить, однострочные комментарии начинаются с двух, идущих подряд символов слэша, т.е. «//» (в приведенных ранее примерах я часто их использовал). Многострочные же комментарии начинаются с сиволов «/*», а заканчиваются символами «*/». Как видите, ничего сложного тут нет.
Поля класса
Поля класса, это своего рода хранилища данных. В них может содержатся информация различного рода, например числа, строки и более сложные данные. В первом примере этого урока, мы описали класс «Rectangle» у которого было два поля. Они объявлялись в строках 30 и 31. При объявлении поля класса, сначала указывается атрибут доступа к полю, потом его тип (определяет тип данных, которое хранит поле: строка, число и т.п.), а следом — имя поля. Завершается объявление символом «;». Этот символ завершает любой оператор (некое действие) в программах, написанных на C#. Схематично это выглядит так:
атрибут_доступа тип название;
Методы класса
Методы класса служат для выполнения неких задач. В первом примере этого урока мы описывали класс «Rectangle» у которого были методы «SetParams», «GetArea», «Display». Объявление методов несколько более сложная задача чем полей класса. Поэтому, детали я раскрою в следующих уроках.
Регистр имеет значение!
Да, и чуть не забыл, C# является регистрозависимым языком. Другими словами, имеет значение, заглавные буквы вы используете или строчные. И ключевое слова class (например) всегда должно писаться так и никак иначе (а не Class или CLASS, или еще как-нибудь). Это означает, что все идентификаторы, ключевые слова и т.п. нужно писать в том регистре, в котором они объявлялись (разработчиком).