Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ROZRAHA_eng.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
73 Кб
Скачать
☆

Роль бібліотек базових класів

На додаток до середовища CLR і специфікаціям CTS / CLS, платформа .NET надає бібліотеку базових класів, яка доступна всім мовам програмування .NET Ця бібліотека не тільки інкапсулює різноманітні примітиви, такі як потоки, файловий ввід-вивід, системи візуалізації графіки і механізми взаємодії з різними зовнішніми пристроями, але також забезпечує підтримку для численних служб, необхідних більшістю реальних додатків.

Бібліотеки базових класів визначають типи, які можна використовувати для побудови програмних додатків будь-якого виду. Наприклад, ASP.NET можна застосовувати для побудови веб-сайтів, WCF - для створення мережевих служб, WPF - для написання настільних додатків з графічним інтерфейсом користувача і т.д. Крім того, бібліотеки базових класів надають типи для взаємодії з XML-документами, локальним каталогом і файловою системою поточного комп'ютера, для комунікацій з реляційними базами даних (через ADO.NET) і т.п. На високому рівні відносини між CLR, CTS, CLS і бібліотеками базових класів виглядають так, як показано на рис. 1.1.

Що привносить мова c#

Синтаксис мови програмування C# виглядає дуже схожим на синтаксис мови Java. Однак називати C# клоном Java неправильно. У дійсності і С #, і Java є членами сімейства мов програмування, заснованого на С (куди також входять С, Objective С, C++ ), і тому вони поділяють схожий синтаксис.

Правда полягає в тому, що багато синтаксичні конструкції C# змодельовані на основі різноманітних аспектів мов Visual Basic (VB) і C++ . Наприклад, подібно VB, мова C# підтримує ідею властивостей класу (як протилежність традиційним методам вилучення і установки) і необов'язкові параметри. Подібно C ++, мова C# дозволяє перевантажувати операції, а також створювати структури, перерахування та функції зворотного виклику (за допомогою делегатів).

Більше того, у міру вивчення матеріалу цієї книги, ви дуже скоро побачите, що C# підтримує безліч засобів, які традиційно зустрічаються в різних мовах функціонального програмування (наприклад, LISP або Haskell), скажімо, лямбда-вирази і анонімні типи. До того ж, з появою технології LINQ [Language Integrated Query - мова інтегрованих запитів), мова C# стала підтримувати конструкції, які роблять її досить унікальною у світі програмування. Незважаючи на все це, найбільший вплив на неї зробили саме мови, засновані на С.

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

• Показники використовувати не потрібно! У програмах на C# зазвичай не виникає потреби в маніпулюванні показниками безпосередньо (хоча у випадку абсолютної необхідності можна опуститися на цей рівень, як буде показано в главі 11).

• Автоматичне управління пам'яттю допомогою збірки сміття. Враховуючи це, ключове слово delete в C# не підтримується.

Формальні синтаксичні конструкції для класів, інтерфейсів, структур, перерахувань і делегатів.

• Аналогічно мови C++ можливість перевантаження операцій для спеціальних типів без зайвих складнощів (наприклад, забезпечення "повернення * this, щоб дозволити зв'язування в ланцюжок" - не ваша турбота).

• Підтримка програмування на основі атрибутів. Цей різновид розробки дозволяє анотувати типи та їх членів з метою додаткового уточнення їх поведінки. Наприклад, якщо позначити метод атрибутом [Obsolete], при спробі використання цього члена програмісти отримають відповідне спеціальне попередження.

З виходом версії .NET 2.0 (приблизно в 2005 р.), мова програмування C# була оновлена для підтримки численних нових функціональних можливостей, найбільш значимі з яких перераховані нижче.

• Можливість створення узагальнених типів і узагальнених членів. Використовуючи узагальнення, можна створювати дуже ефективний і безпечний до типів код, який визначає безліч заповнювачів, що вказуються під час взаємодії з узагальненими елементами.

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

• Можливість визначення єдиного типу в декількох файлах коду (або, якщо необхідно, у вигляді подання в пам'яті) з використанням ключового слова partial.

У версії .NET 3.5 (що вийшла приблизно в 2008 р.) в мову програмування C# була додана додаткова функціональність, включаючи такі засоби.

• Підтримка суворо типізованих запитів (тобто LINQ), застосовуваних для взаємодії з різноманітними формами даних. Запити LINQ ви вперше зустрінете в главі 12.

• Підтримка анонімних типів, які дозволяють моделювати форму типу, а не його поведінку.

• Можливість розширення функціональності існуючого типу (не створюючи його підкласи) з використанням розширюють методів.

• Включення лямбда-операції (=>), яка ще більше спрощує роботу з типами делегатів .NET.

• Новий синтаксис ініціалізації об'єктів, який дозволяє встановлювати значення властивостей під час створення об'єкта.

Версія .NET 4.0 (вийшла в 2010 р.) доповнила C# ще рядом засобів, у тому числі зазначеними нижче.

• Підтримка необов'язкових параметрів, а також іменованих аргументів на методах.

• Підтримка динамічного пошуку членів під час виконання через ключове слово dynamic. Як буде показано в главі 18, це забезпечує універсальний підхід до виклику членів на льоту незалежно від інфраструктури, за допомогою якої вони були реалізовані (COM, IronRuby, IronPython або служби рефлексії .NET).

• Робота з узагальненими типами стала набагато зрозумілішою, враховуючи можливість легкого відображення узагальнених даних на універсальні колекції System. Object через коваріантність і контраваріантність.

Все це підводить нас до поточної версії С #, що входить до складу платформи .NET 4.5.

У цій версії C# з'явилася пара нових ключових слів (async і await), які значно спрощують багатопоточне і асинхронне програмування. Ті, кому доводилося працювати з попередніми версіями С #, можуть пригадати, що виклик методів через вторинні потоки вимагав досить великого обсягу малозрозумілого коду і використання різних просторів імен .NET. Завдяки тому, що тепер C# підтримує мовні ключові слова, які автоматично вирішують ці завдання, процес виклику методів асинхронним чином майже настільки ж простий, як їх виклик до синхронної манеру. Більш докладно ці теми розглядаються в розділі 19.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]