Назад

C# (произносится как "си шарп") — простой, современный объектно-ориентированный и типобезопасный язык программирования. C# относится к широко известному семейству языков C, и покажется хорошо знакомым любому, кто работал с C, C++, Java или JavaScript.Здесь представлен обзор основных компонентов языка. Если вы хотите изучить язык с помощью интерактивных примеров, рекомендуем поработать с нашими вводными руководствами по C# .

C# является объектно-ориентированным языком, но поддерживает также и компонентно-ориентированное программирование. Разработка современных приложений все больше тяготеет к созданию программных компонентов в форме автономных и самоописательных пакетов, реализующих отдельные функциональные возможности. Важная особенность таких компонентов — это модель программирования на основе свойств, методов и событий. Каждый компонент имеет атрибуты, предоставляющие декларативные сведения о компоненте, а также встроенные элементы документации. C# предоставляет языковые конструкции, непосредственно поддерживающие такую концепцию работы. Благодаря этому C# отлично подходит для создания и применения программных компонентов.

Вот лишь несколько функций языка C#, обеспечивающих надежность и устойчивость приложений: сборка мусора автоматически освобождает память, занятую уничтоженными и неиспользуемыми объектами; обработка исключений предоставляет структурированный и расширяемый способ выявлять и обрабатывать ошибки; строгая типизация языка не позволяет обращаться к неинициализированным переменным, выходить за пределы индексируемых массивов или выполнять неконтролируемое приведение типов.

В C# существует единая система типов. Все типы C#, включая типы-примитивы, такие как int и double, наследуют от одного корневого типа object. Таким образом, все типы используют общий набор операций, и значения любого типа можно хранить, передавать и обрабатывать схожим образом. Кроме того, C# поддерживает пользовательские ссылочные типы и типы значений, позволяя как динамически выделять память для объектов, так и хранить упрощенные структуры в стеке.

Чтобы обеспечить совместимость программ и библиотек C# при дальнейшем развитии, при разработке C# много внимания было уделено управлению версиями. Многие языки программирования обходят вниманием этот вопрос, и в результате программы на этих языках ломаются чаще, чем хотелось бы, при выходе новых версий зависимых библиотек. Вопросы управления версиями существенно повлияли на такие аспекты разработки C#, как раздельные модификаторы virtual и override, правила разрешения перегрузки методов и поддержка явного объявления членов интерфейса.

Здравствуй, мир

Для первого знакомства с языком программирования традиционно используется программа "Hello, World". Вот ее пример на C#:

 

 

using System;

class Hello

{

    static void Main()

    {

        Console.WriteLine("Hello, World");

    }

}

 

Файлы исходного кода C# обычно имеют расширение .cs. Если код нашей программы "Hello, World" хранится в файле hello.cs, для ее компиляции выполните такую команду из командной строки:

csc hello.cs

В результате вы получите исполняемую сборку с именем hello.exe. Это приложение при запуске выводит следующий результат:

Hello, World

Важно!

Команда csc выполняет компиляцию на полной версии платформы, и она может существовать не на всех платформах.

 

Программа "Hello, World" начинается с директивы using, которая ссылается на пространство имен System. Пространства имен позволяют иерархически упорядочивать программы и библиотеки C#. Пространства имен содержат типы и другие пространства имен. Например, пространство имен System содержит несколько типов (в том числе используемый в нашей программе класс Console) и несколько других пространств имен, таких как IO и Collections. Директива using, которая ссылается на пространство имен, позволяет использовать типы из этого пространства имен без указания полного имени. Благодаря директиве using в коде программы можно использовать сокращенное имя Console.WriteLine вместо полного варианта System.Console.WriteLine.

Класс Hello, объявленный в программе "Hello, World", имеет только один член — это метод с именем Main. Метод Main объявлен с модификатором static. Методы экземпляра могут ссылаться на конкретный экземпляр объекта, используя ключевое слово this, а статические методы работают без ссылки на конкретный объект. По стандартному соглашению точкой входа программы является статический метод с именем Main.

Выходные данные программы создаются в методе WriteLine класса Console из пространства имен System. Этот класс предоставляется библиотеками стандартных классов, ссылки на которые компилятор по умолчанию добавляет автоматически.

Есть еще очень много важной информации о языке C#. В следующих статьях вы найдете сведения об отдельных элементах C#. Эти краткие обзоры содержат базовые сведения обо всех элементах языка и позволят вам лучше разобраться в том, как работает C#.

  • Структура программы
    • Организационная структура C# основывается на таких понятиях, как программыпространства иментипычленыи сборки.
  • Типы и переменные
    • Получите дополнительные сведения о типах значенийссылочных типахи переменных в языке C#.
  • Выражения
    • Выражениясоздаются из операндов и операторов. Выражения возвращают значения.
  • Операторы
    • Используйте инструкциидля описания действий, выполняемых программой.
  • Классы и объекты
    • Классыявляются самым важным типом в языке C#. Объекты представляют собой экземпляры классов. Классы создаются описанием их членов, которые также описаны в этой статье.
  • Структуры
    • Структуры— это сущности для хранения данных. От классов они отличаются в первую очередь тем, что являются типами значений.
  • Массивы
    • Массив— это структура данных, содержащая несколько переменных, доступ к которым осуществляется по вычисляемым индексам.
  • Интерфейсы
    • Интерфейсопределяет контракт, который может быть реализован классами и структурами. Интерфейс может содержать методы, свойства, события и индексаторы.Интерфейс не предоставляет реализацию членов, которые в нем определены. Он лишь перечисляет члены, которые должны быть определены в классах или структурах, реализующих этот интерфейс.
  • Перечисления
    • Тип enumпредставляет собой тип значения с набором именованных констант.
  • Делегаты
    • Тип delegateпредставляет ссылки на методы с конкретным списком параметров и типом возвращаемого значения. Делегаты позволяют использовать методы как сущности, сохраняя их в переменные и передавая в качестве параметров. Принцип работы делегатов близок к указателям функций из некоторых языков, но в отличие от указателей функций делегаты являются объектно-ориентированными и строго типизированными.
  • Атрибуты
    • Атрибутыпозволяют программам указывать дополнительные описательные данные о типах, членах и других сущностях.

 

У вас нет прав для комментирования.