Введення в мову C # і .NET Framework

Найактуальніша документація за версією-кандидату Visual Studio 2017:   Документація за версією-кандидату Visual Studio 2017
Найактуальніша документація за версією-кандидату Visual Studio 2017: Документація за версією-кандидату Visual Studio 2017 .

C # - елегантний, тіпобезопасний об'єктно-орієнтована мова, призначений для розробки різноманітних безпечних і потужних додатків, які виконуються в середовищі .NET Framework. За допомогою мови C # можна створювати звичайні додатки Windows, XML-веб-служби, розподілені компоненти, додатки "клієнт-сервер", додатки баз даних і т. Д. Visual C # надає розвинений редактор коду, конструктори зі зручним для користувача інтерфейсом, вбудований відладчик і безліч інших засобів, що спрощують розробку додатків на базі мови C # і .NET Framework.

Синтаксис C # дуже виразний, але простий у вивченні. Усі, хто знайомий з мовами C, C ++ або Java з легкістю впізнають синтаксис з фігурними дужками, характерний для мови C #. Розробники, які знають будь-який з цих мов, як правило, зможуть домогтися ефективної роботи з мовою C # за дуже короткий час. Синтаксис C # робить простіше то, що було складно в C ++, і забезпечує потужні можливості, такі як типи значень Nullable, перерахування, делегати, лямбда-вирази і прямий доступ до пам'яті, чого немає в Java. C # підтримує універсальні методи і типи, забезпечуючи більш високий рівень безпеки і продуктивності, а також ітератори, що дозволяють при реалізації колекцій класів визначати власну поведінку ітерації, яке може легко використовуватися в клієнтському коді. Вирази LINQ роблять строго типізований запит дуже зручною мовною конструкцією.

Як об'єктно-орієнтована мова, C # підтримує поняття інкапсуляції, успадкування та поліморфізму. Всі змінні і методи, включаючи метод Main - точку входу додатки - инкапсулируются в визначення класів. Клас може успадковувати безпосередньо з одного родового класу, але може реалізовувати будь-яке число інтерфейсів. Для методів, які скасовують віртуальні методи в батьківському класі, необхідно ключове слово override, щоб виключити випадковий повторне визначення. У мові C # структура схожа на полегшений клас: це тип, що розподіляється по стопках, який реалізує інтерфейси, але не підтримує спадкування.

На додаток до основних описаним об'єктно-орієнтованим принципам, мова C # спрощує розробку компонентів програмного забезпечення завдяки кільком інноваційним конструкціям мови, до числа яких входять такі:

  • Інкапсульовані сигнатури методів, звані делегатами, які підтримують тіпобезопасние повідомлення про події.

  • Властивості, що виступають в ролі методів доступу для закритих змінних-членів.

  • Атрибути з декларативними метаданими про типах під час виконання.

  • Вбудовані коментарі XML-документації.

  • LINQ, що пропонує вбудовані можливості запитів в різних джерелах даних.

Якщо буде потрібно забезпечити взаємодію з іншим програмним забезпеченням Windows, таким як об'єкти COM або власні бібліотеки DLL Win32, в мові C # можна використовувати процес, який називається "Interop." Процес Interop дозволяє програмам на C # виконувати практично будь-які дії, які може виконувати оригінальну програму на C ++. Мова C # підтримує навіть покажчики і поняття "небезпечного" коду для тих випадків, коли прямий доступ до пам'яті має вкрай важливе значення.

Процес побудови C # в порівнянні з C і C ++ простий і є більш гнучким, ніж в Java. Немає окремих файлів заголовка, а методи і типи не потрібно оголошувати в певному порядку. У вихідному файлі C # може бути визначено будь-яке число класів, структур, інтерфейсів і подій.

Наступні ресурси з мови C # є додатковими:

Програма на мові C # виконується в середовищі .NET Framework - інтегрованому компоненті Windows, що містить віртуальну систему виконання (середа CLR) і уніфікований набір бібліотек класів. Середа CLR є комерційну реалізацію Майкрософт інфраструктури CLI (common language infrastructure), міжнародного стандарту, основи середовищ виконання і розробки з тісною взаємодією мов і бібліотек.

Вихідний код, написаний на мові C #, компілюється в проміжний мова (IL) відповідно до специфікації CLI. Код IL і ресурси, такі як растрові зображення і рядки, зберігаються на диску в виконуваному файлі, званому складанням, з розширенням EXE або DLL в більшості випадків. Збірка містить маніфест з відомостями про типи збірки, версії, мовою і регіональних параметрах і вимогах безпеки.

При виконанні програми на C # збірка завантажується в середу CLR в залежності від відомостей в маніфесті. Далі, якщо вимоги безпеки дотримані, середа CLR виконує JIT-компіляцію для перетворення коду IL в інструкції машинного коду. Середа CLR також надає інші служби, які стосуються автоматичного збору сміття, обробці виключень і управління ресурсами. Код, що виконується середовищем CLR, іноді називають "керованим кодом" в протиставлення "некерованого коду", який компілюється в машинний код, призначений для певної системи. Далі показані відносини під час компіляції і час виконання між файлами з вихідним кодом C #, бібліотеками класів .NET Framework, збірками і середовищем CLR.

Взаємодія між мовами є ключовою особливістю .NET Framework. Оскільки код на проміжному мовою (IL), створюваний компілятором C #, відповідає специфікації CTS, код IL на основі C # може взаємодіяти з кодом, створюваним версіями мов Visual Basic, Visual C ++, Visual J # платформи .NET Framework і ще більш ніж 20 CTS-сумісних мов. В одній збірці може бути кілька модулів, написаних на різних мовах платформи .NET Framework, і типи можуть посилатися один на одного, як якщо б вони були написані на одній мові.

Крім служб часу виконання, в .NET Framework також є велика бібліотека, що складається з більш ніж 4000 класів, організованих по просторах імен, які забезпечують різноманітні корисні функції для будь-яких дій, починаючи від введення і виведення файлів для управлінням рядками для розбивки XML, і закінчуючи елементами управління Windows Forms. У звичайному додатку на мові C # бібліотека класів .NET Framework інтенсивно використовується для "влаштування" коду.

Додаткові відомості про платформу .NET Framework см. В розділі Overview of the Microsoft .NET Framework .