
Лабораторная работа №1 Введение в программирование на c#
C# (си шарп) – объектно-ориентированный язык программирования общего назначения, созданный компанией Microsoft в 2001 году. Язык разработан специально для работы в составе общеязыковой инфраструктуры (CLI – Common Language Infrastructure), что предполагает его компиляцию в промежуточный код (промежуточный язык, IL – Intermediate Language).
Синтаксис C# напоминает C++. Основной особенностью языка является то, что подпрограммы, написанные на нём, не могут быть определены вне класса. Для сравнения:
#include "conio.h"
#include "iostream.h"
int main() {
cout << "Hello, world!\n";
return 0;
}
и код на C#:
using System;
namespace PlaygroundConsole {
class Program {
static void Main(string[] args) {
Console.WriteLine("Hello, world!");
}
}
}
Кроме того, нет необходимости в отдельном описании класса (заголовочный файл *.h) и его определении (файл реализации *.cpp) – всё сосредоточено в одном месте. Также здесь нет понятия функции-подстановки в понимании C++ (когда тело метода задаётся внутри класса), однако, начиная с версии .NET 4.5 есть специальные средства для управления компилятором и преобразования метода в подстановку (атрибут [MethodImplOptions.AggressiveInlining]).
Аналогично программам на большинстве других языков для работы требуются библиотечные функции. В C# функции не существуют без классов, поэтому вместо библиотек функций здесь с помощью ключевого слова using подключаются сборки библиотек классов, которые состоят из наборов классов. Сборки можно рассматривать как модули, выделенные по признаку выполняемой работы. Например, сборка System.IO содержит классы, выполняющие обработку файлов, директорий и пр.; System.Net обеспечивает сетевое взаимодействие и т.п. Сборка System, являющаяся основой для других, содержит определения базовых типов, без которых работа даже самых простых программ была бы невозможной (например, в ней содержится объект Console и типы int, string и др.).
Заключение классов в пространство имён не является обязательным, но предпочтительно – по той же причине, по которой эта возможность была введена в языке C++: избежание коллизий имён.
Точка входа может возвращать целочисленный результат, однако на платформе .NET нет необходимости использовать устаревший способ информирования системы о результате работы программы (рекомендуется применять механизм исключений).
Параметры командной строки, как и в C++, передаются массивом, однако в этом языке массив является экземпляром класса и обладает свойствами (атрибутами). Например, свойство Length хранит длину массива, поэтому не нужно передавать точке входа второй параметр argc.
Примитивные типы (bool, byte, char, int, long, float, double), циклы, объявления классов и структур, перечисления – в основном схожи с языком C++. Например, определим класс «Планета» и сохраним несколько таких объектов в список: