Атрибути

Атрибути є позначками, що використовуються програмістом для передачі декларативної інформації. Приймачем інформації може бути інструментальне середовище, програма-конструктор, аналізатор програмного коду або інший програмний інструмент. Процес читання інформації атрибутів називається рефлексією.

Атрибути беруться в квадратні дужки і можуть встановлюватися для класів, членів класів, аргументів та інших елементів програми. Приклад використання атрибутів:

 

[CodeReview("l/l/199", Comment="Rockin")]

class Test

{

}

10.2.4 Робота з версіями

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

10.2.5 Організація програм

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

Крім того, в С# не існує випереджаючих оголошень. Порядок розміщення оголошень класів в початкових файлах не важливий; оголошення класів можна довільно переставляти за своїм бажанням.

10.2.6 Відсутні в мові C# елементи

Нижче перелічені ті елементи C++, яких немає в мові С#:

- множинне спадкування;

- константні функції класів і аргументи (константні змінні класів підтримуються);

- глобальні змінні;

- typedef;

- приведення при конструюванні;

- значення за умовчанням для аргументів функцій.

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