Основы синтаксиса


Особенности синтаксиса 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, или еще как-нибудь). Это означает, что все идентификаторы, ключевые слова и т.п. нужно писать в том регистре, в котором они объявлялись (разработчиком).