Краткое введение в язык программирования C#

В этом уроке начнём наше погружение в язык программирования C#, разберемся с тем, зачем нужен файл Program.cs, посмотрим на его структуру, и познакомимся с понятием класса в C#.

Язык программирования C# разработан компанией Microsoft. Первая версия языка вышла в начале 2002 года. На момент создания курса (2023 год) актуальная версия языка: 12. C# является объектно-ориентированным языком общего назначения с C-подобным синтаксисом. Если у вас есть опыт разработки на C/C++/Java, то на C# вам будет разрабатывать довольно комфортно.

C# это язык со статической типизацией, который поддерживает полиморфизм, перегрузку операторов, обобщённые типы и методы, итераторы, анонимные функции (с замыканиями), исключения. Для обработки ошибок используются исключения. Для работы с коллекциями есть очень мощный инструмент LINQ. Об этих и многих других возможностях языка мы с вами познакомимся на этом курсе.

На предыдущем уроке мы разобрались с тем, как создавать C#-проекты. Кратко напомним: это можно сделать с помощью консольной утилиты dotnet, набрав команду:

$ dotnet new console -o DemoApp1

Либо в IDE, используя соответствующий мастер для создания проектов.

В результате в проекте типа "Console Application" будет создано два файла:

  • DemoApp1.csproj – конфигурационный файл проекта;
  • Program.cs– файл с исходным кодом.

Конфигурационный файл проекта (имеет расширение .csproj), мы разобрали на предыдущем уроке. В рамках этого степа более внимательно посмотрим на Program.cs.

Начнем с того, что Program.cs может быть представлен в двух вариантах. Первый вариант, назовем его полным, был единственно доступным до версии C# 9.0, выглядит он так:

namespace DemoApp2
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
}

Второй вариант файла Program.cs (сокращенный), выглядит так:

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

Он появился в C# 9.0 и является вариантом “по умолчанию”, если вы создаете проект с использованием утилиты dotnet. Для того чтобы получить полный вариант, в Visual Studio нужно поставить галочку "Do not use top-level statements".

Технически они эквиваленты и при компиляции превратятся в один и тот же код для среды исполнения .NET.

Посмотрим на внутреннее устройство файла Program.cs. Начнем с полной версии.

Первое, что мы видим – это объявление пространства имен DemoApp2:

namespace DemoApp2
{
    // ...
}

Пространства имен – это своего рода контейнеры, в которые помещаются классы C#, они нужны для организации кода в логические блоки. Для объявления пространства имен используется ключевое слово namespace.

Таким образом, в программе выделился логический блок DemoApp2, в котором будут лежать все необходимые классы. В нашем случае – это всего один класс с именем Program. Обратите внимание, что файл, в котором лежит этот класс, имеет такое же имя: Program.cs, для стиля разработки на C# это важно, и вам стоит придерживаться такой практики – имя файла и имя класса должны совпадать. Также отметим, что в одном файле не стоит создавать более одного класса.

internal class Program
{
    // ...    
}

Для объявления класса используется ключевое слово class.

Единицей исполнения кода в классе является метод. Метод, с которого начинается выполнение вашей программы, называется точка входа. В C# точкой входа по умолчанию является метод с именем Main:

static void Main(string[] args)
{
    Console.WriteLine("Hello, World!");
}

В этом методе всего одна строка:

Console.WriteLine("Hello, World!");

При её выполнении в консоль будет выведено: "Hello, World!".

При компиляции второго варианта (сокращенного) файла Program.cs  всё необходимое окружение для строки Console.WriteLine("Hello, World!"); в виде, метода Main, класса Program и пространства имен будет сгенерировано компилятором.

Классы являются основными строительными блоками, из которых формируются программы на языке C#. Фактически в C# ничего не может существовать вне классов. Невозможно создать функцию, которая не находится внутри какого-то класса.

Для объявления класса используется ключевое слово class, после которого располагается его имя.

class MyClass
{
    // Содержимое класса
}

Класс может содержать различные структурные элементы, такие как поля, свойства, методы, константы и т.п.

Со всеми этими аспектами мы познакомимся в рамках этого курса, в данный момент наиболее важным является понятие метода.

Методы

Метод представляет собой блок кода (набор инструкций), который можно вызвать.

Ниже представлен пример метода PrintHello, входящего в состав класса MyClass.

class MyClass
{
    public void PrintHello()
    {
        Console.WriteLine("Hello");
    }
}

Создадим объект класса MyClass и вызовем у него метод PrintHello. Всё вместе будет выглядеть так

  • Для полной версии:
namespace DemoApp2
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");

            var m = new MyClass();
            m.PrintHello();
        }
    }

    class MyClass
    {
        public void PrintHello()
        {
            Console.WriteLine("Hello");
        }
    }
}
  • Для сокращенной версии:
Console.WriteLine("Hello, World!");

var m = new MyClass();
m.PrintHello();

class MyClass
{
    public void PrintHello()
    {
        Console.WriteLine("Hello");
    }
}

Для вывода строки на консоль мы используем метод WriteLine, обратите внимание: в этом случае нет необходимости в предварительном создании объект класса Console. Это возможно из-за того, что метод WriteLine является статическим: перед его именем, в объявлении стоит ключевое слово static. Если мы добавим static к методу PrintHello, то его тоже можно будет вызывать без создания экземпляра класса MyClass.

Вариант для сокращенной версии:

Console.WriteLine("Hello, World!");

MyClass.PrintHello(); // Новый вариант вызова метода PrintHello

class MyClass
{
    public static void PrintHello()
    {
        Console.WriteLine("Hello");
    }
}

Если Вы хотите больше узнать про язык C#, приглашаем Вас на наш курс “C#. Базовый уровень“.

Добавить комментарий

Ваш адрес email не будет опубликован.