- •Ilasm. Применение утилит ildasm и Reflector. Внутреннее устройство сборок Microsoft .Net.
- •Использование атрибутов
- •Библиотека классов Microsoft .Net Framework. Примеры использования библиотеки классов.
- •Библиотека классов .Net Framework
- •Директивы using и ссылки
- •Библиотеки классов ввода/вывода пространства имен System.Io. Примеры использования.
- •Применение экспортированных функций dll
- •Оператор for
- •В отличие от оператора for оператор while никак не изменяет значения пере-
- •Делегаты и события на платформе Microsoft .Net.
- •Компонентное программирование в .Net
- •13(2). Компонентное программирование в .Net (1)
- •Концепция применения программных платформ. Преимущества применения программных платформ при разработке приложений (на примере Microsoft .Net)
- •Visual Studio .Net набор языков платформы Microsoft .Net послужит отличным под-
- •Компилятор jit
- •Объектно-ориентированный подход к программированию. Классы и объекты. Определения; Определения классов и объектов. Проблемы, решаемые этим подходом.
- •Плюсы ооп:
- •Оператор switch
- •Возврат goto
- •Основные операторы языка c#
- •Работа с файлами в языке с#. Синтаксис, алгоритм работы при чтении/записи в файл.
- •Синхронизация потоков (interlocked-функции и критические секции). Основные проблемы синхронизации.
- •Строгая и нестрогая типизация, характеристики типов данных. Определение типа данных.
- •Разработка Windows-приложений с использованием технологии Windows Forms. Основные идеи технологии. Примеры эффективного применения.
- •Ide Visual c# автоматически создает код инициализации. В представлении Код найдите конструктор для класса Form1. У него есть подпись public Form1().
Компилятор jit
Еще одним преимуществом технологии, предоставляемой в рамках платформы Micro-
Microsoft .NET Framework, перед традиционными технологиями программного обеспечения
является наличие так называемых сборок. Сборка представляет собой один или не-
несколько файлов, содержащих все необходимое не только для работы приложения,
но и для ее самодокументирования.
Упрощение отладки программ С#
Известно, что на отладку сложной программы можно потратить намного больше вре-
времени и сил, чем на ее разработку и написание. Объем отладочного кода, создаваемого
специально для тестирования модулей программы, может многократно превышать
объем кода самих отлаживаемых модулей.
Исполнимый код, получающийся в результате трансляции исходного текста про-
программы, написанной на таких языках программирования, как C++ и Pascal, имеет
практически полный доступ к ресурсам своего процесса. Такие ошибки, как чтение
неинициализированных переменных, неправильное преобразование типов указателей
или их неправильная инициализация, забывчивость при освобождении динамически
полученных блоков памяти, ошибки при выполнении числовых операций, могут при-
привести к аварийному завершению программы или к другим плачевным результатам.
Многие ошибки обычно остаются незамеченными на этапе компиляции и сказыва-
сказываются только при работе программы, причем, как это обычно бывает, в самый неподхо-
неподходящий момент.
Компилятор языка С# исключает возникновение перечисленных выше и многих
других ошибок еще на этапе компиляции, что существенно облегчает и ускоряет про-
процесс отладки сложных программ. Необходимые для этого средства встроены непо-
непосредственно в язык С#.
Среди других средств, встроенных в язык С# и упрощающих отладку программ,
следует упомянуть объектно-ориентированную обработку исключений и систему
сборки мусора.
1. Легкость развертывания приложений в глобальной среде
Интернет
2. Экономичная разработка программного обеспечения
3. «Бесшовная», гибкая интеграция программных продуктов
и аппаратных ресурсов
4. Предоставление программного обеспечения как сервиса
5. Новый уровень безопасности и удобства использования
Компонентный подход как развитие объектно-
ориентированной модели
2. Универсальная система типизации: «всякая сущность
есть объект»; унификация данных и метаданных
3. Строго иерархическая организация кода, пространств
имен и классов
4. Универсальный интерфейс .NET Framework (включая
поддержку различных подходов к программированию)
5. Высокая вариативность экземпляров реализации (в
частности, на основе веб-сервисов)
Многоязыковая поддержка (десятки языков
программирования)
15. Массивы в языке С#. Объявление и применение массивов в языке С#, обращение к элементам массива.
Массив — это структура данных, содержащая несколько переменных одного типа. Массивы объявляются со следующим типом.
type[] arrayName;
// Declare a single-dimensional array
int[] array1 = new int[5];
// Declare and set array element values
int[] array2 = new int[] { 1, 3, 5, 7, 9 };
// Alternative syntax
int[] array3 = { 1, 2, 3, 4, 5, 6 };
// Declare a two dimensional array
int[,] multiDimensionalArray1 = new int[2, 3];
// Declare and set array element values
int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };
// Declare a jagged array
int[][] jaggedArray = new int[6][];
// Set the values of the first array in the jagged array structure
jaggedArray[0] = new int[4] { 1, 2, 3, 4 };
int[][] jaggedArray = new int[2][];
jaggedArray[0] = new int[4];
jaggedArray[1] = new int[3];
В платформе .NET Framework массивы реализуются как экземпляры класса Array. Этот класс обеспечивает несколько ценных методов, например Sort иReverse.
Типы массива являются ссылочными типами, производными от абстрактного базового типа Array. Поскольку этот тип реализует IEnumerable иIEnumerableHYPERLINK "http://msdn.microsoft.com/ru-ru/library/9eekhta0(v=VS.90).aspx"<HYPERLINK "http://msdn.microsoft.com/ru-ru/library/9eekhta0(v=VS.90).aspx"THYPERLINK "http://msdn.microsoft.com/ru-ru/library/9eekhta0(v=VS.90).aspx">, в C# во всех массивах можно использовать итерацию foreach.
Невыровненный массив является массивом массивов, и поэтому его элементы являются ссылочными типами и инициализируются значением null.
int[][] jaggedArray3 =
{
new int[] {1,3,5,7,9},
new int[] {0,2,4,6},
new int[] {11,22}
};
-
Обработка исключений на платформе Microsoft .NET. Практическое применение.
Для работы с исключениями код должен быть организован особым образом. Часть кода, в которой может быть выработано исключение, заключается в блок try, а код, обрабатывающий исключение - в блок catch. Исключения могут вырабатываться самой CLR (например при попытке деления на 0) либо пользовательским методом, для чего служит ключевое слово throw после которого указывается объект-исключение, передаваемый в блок catch. Класс этого объекта должен быть производными от класса Exception. В отличие от С++ имеется блок finally. Код, заключенный в блок finally будет выполнен как при обычном завершении работы блока try, так и при вызове исключения в этом блоке. Если перед завершением функции, исполнение которой может быть прервано исключением, обязательно должны быть выполнены некоторые действия (например, закрытие ранее открытого файла), следует заключить соответствующий код в блок finally.
Исключения являются стандартным механизмом сообщения об ошибках.Приложения и библиотеки не должны использовать коды возврата для сообщения об ошибках.Использование исключений способствует единообразию при разработке платформы и позволяют сообщать об ошибках таким членам, как конструкторы, которые не могут получить возвращаемый тип.Исключения также позволяют программам обрабатывать ошибки или завершать работу должным образом.