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

Приложение "Hello World" с Windows Forms

ЛИСТИНГ 1

using System;

using System.WinForms;

using System.Drawing;

public class MyForm : Form

{

public MyForm ()

{

Text = "Windows Forms Demo";

}

protected override void OnPaint (PaintEventArgs e)

{

e.Graphics.DrawString ("Hello, world", Font,

new SolidBrush (Color.Black), ClientRectangle);

}

public static void Main (string[] args)

{

Application.Run (new MyForm ());

}

}

20.Управляемый код и данные. Особенности создания приложений в среде Framework .Net - единый каркас среды разработки

В каркасе Framework .Net можно выделить два основных компонента:

  • статический - FCL (Framework Class Library) - библиотеку классов каркаса;

  • динамический - CLR (Common Language Runtime) - общеязыковую исполнительную среду.

Управляемый C++

Прежде всего, рассмотрим важные для нас особенности самой .NET Framework.

Среди основных задач подобных сред исполнения программ можно отметить следующие:

  • автоматическая сборка мусора, избавляющая программиста от необходимости помнить о таких мелочах, как вызовы деструкторов и освобождение памяти, занимаемой объектами;

  • гарантированная инициализация переменных, контроль типов и проверка допустимости значений аргументов во время исполнения, что, в свою очередь, позволяет защитить систему от неправильно работающих программ, тем самым, повышая её надёжность;

  • сокрытие деталей работы с элементами операционной системы, включая многозадачность, пользовательский интерфейс, управление ресурсами и т.п., что позволяет абстрагироваться от деталей работы в конкретной ОС и, в некоторых случаях, создавать переносимые приложения.

C++ разрабатывался как универсальный язык, в том числе и для решения задач реального времени, низкоуровневого программирования и написания драйверов аппаратных устройств, в связи с чем применение в нём автоматической сборки мусора, неявной инициализации переменных и проверки допустимости значений аргументов является неоправданными из-за потери производительности.

Прямая работа с операционной системой и различными API, а также “мирное

C++ остался самим собой. Можно не инициализировать указатели, выходить за границы массивов, забывать освобождать выделенную память, и никакие CLR не могут нам в этом помешать. С другой стороны, C++ должен уметь работать с объектами CLR и позволять этим объектам работать со своим кодом, т.е. играть по правилам той среды, в которой он используется.

Для решения этих задач разработчики из Microsoft пошли по пути расширения возможностей языка, добавления в него ряда ключевых слов, директив и опций компилятора. Как раз это расширение и получило название Managed Extensions for C++.

Managed Extensions for C++ позволяет C++ программам использовать следующие объекты CLR:

  • Управляемые типы, массивы и указатели

  • Интерфейсы

  • Строки

  • Делегаты и события

  • Свойства

  • Метаданные

__gc

Идентификатор __gc применяется для объявления сложных типов, массивов и указателей, размещаемых в куче среды исполнения CLR. Сокращение gc, скорее всего, происходит от garbage collection. Рассмотрим пример:

__gc class Foo {

public:

~Foo();

void Fun();

};

void test()

{

Foo *p = new Foo;

p->Fun();

}