Содержание
- 2. Массивы в С# Массивы в С# с точки зрения синтаксиса практически не отличаются от массивов в
- 3. Объявление массива Массивы объявляются путем помещения квадратных скобок ([ ]) после указания типа данных для элементов
- 4. // Массив символьных строк с 10 //элементами {0, 1,…, 9} string[] booksOnCOM; booksOnCOM = new string[10];
- 5. Такое объявление массива приведет к ошибке компилятора: // При определении массива //фиксированного размера мы обязаны //использовать
- 6. //Будет автоматически создан массив с //4 элементами. Обратите внимание на //отсутствие ключевого слова new //и на
- 7. Заполнение массива в С# Заполнить массив можно, перечисляя элементы последовательно в фигурных скобках. А можно использовать
- 8. // Используем последовательное //перечисление элементов массива: string[] firstNames = new string[5] {“Steve”, “Gina”, “Swallow”, “Baldy”, “Gunner”};
- 9. Важное различие между массивами C++ и С# В С# элементам массива автоматически присваиваются значения по умолчанию
- 10. Многомерные массивы Помимо массивов с одним измерением в С# поддерживаются также две основные разновидности многомерных массивов.
- 11. // Прямоугольный многомерный массив int[] myMatrix; myMatrix = new int[6, 6]; // Заполняем массив 6 на
- 12. Результат работы программы
- 13. Второй тип многомерного массива можно назвать “ломаным” (jagged). Такой массив содержит в качестве внутренних элементов некоторое
- 14. // "Ломаный" многомерный массив (массив из // массивов). В нашем случае - это массив // из
- 15. // Выводим каждую строку на системную консоль (как //мы помним, каждому элементу // присваивается значение по
- 16. Результат работы программы
- 17. Базовый класс System.Array Все наиболее важные различия между массивами в C++ и С# происходят оттого, что
- 18. Таблица Член класса Назначение BinarySearch() Этот статический метод можно использовать только тогда, когда массив реали- зует
- 19. элементов (числовые элементы приобретут значения 0, а ссылки на на объекты – null) CopyTo() Используется для
- 20. GetLengt().Lenght Метод GetLength() используется для определения количества элементов в указанном измерении массива. Length - это свойство
- 21. выбранного вами измерения массива. GetValue() Возвращает или SetValue() устанавливает значение указанного индекса для массива. Этот метод
- 22. элементы одномерного массива в обратном порядке. Sort() Сортирует одномерный массив встроенных типов данных. Если элементы массива
- 23. Пример // Создаем несколько массивов символьных // строк и экспериментируем с членами // System.Array class Arrays
- 24. // Выводим имена в соответствии с порядком // элементов в массиве Console. WriteLine(“Here is the array:”);
- 25. Array.Reverse(firstNames ); // ...и снова выводим имена Console. WriteLine(“Here is the array once reversed:”); for (int
- 26. for (int i = 0; i { Console. Write(firstNames[i] + "\t\n"); } return 0; } }
- 27. Результат программы
- 28. Работа со строками в С#
- 29. Строки в С# String (строки Unicode) — это встроенный тип данных С#. Все строки в мире
- 30. Таблица Член класса Назначение Length Это свойство возвращает длину указанной строки. Concat() Этот статический метод класса
- 31. Сору() Этот статический метод создает новую копию существующей строки Format() Используется для форматирования строки с использованием
- 32. PadLeft() Эти методы позволяют заполнить PadRight() (“набить”) строку указанными символами. Remove() Эти методы позволяют создать Replace()
- 33. Обратить внимание Хотя string — это ссылочный тип данных, при использовании операторов равенства (== и !=)
- 34. Управляющие последоватльности В С#, как и в С, и в C++, и в Java строки могут
- 35. Пример // Применение управляющих //последовательностей - \t, \\, \n и прочих string anotherString; anotherString = “Every
- 36. Таблица Управляющие Назначение посл-ти \ Вставить одинарную кавычку в строку \” Вставить двойную кавычку в строку
- 37. \a Запустить системное оповещение (Alert). \b Вернуться на одну позицию (Backspace). \f Начать следующую страницу (Form
- 38. \u Вставить символ Unicode. \v Вставить вертикальный символ табуляции (Vertical tab). \0 Представляет пустой символ (NULL)
- 39. Помимо управляющих последовательностей, в С# предусмотрен также специальный префикс @ для дословного вывода строк вне зависимости
- 40. Применение System.Text.StringBuilder При работе со строками в С# необходимо помнить очень важную вещь: значение строки не
- 41. Пример // Вносим изменения в строку? На самом деле // нет... System.String strFixed = "This is
- 42. Работа с копиями копий может надоесть. Поэтому в С# существует класс, позволяющий изменять строки напрямую –
- 43. // Демонстрирует применение класса StringBullder using System; using System.Text; // Здесь живет StringBuilder! class StringApp {
- 44. Помимо добавления класс StringBuilder допускает и другие операции, например удаление определенных символов или их замену. После
- 45. using System; using System.Text; class StringApp { public static int Main(string[] args) { StringBuilder myBuffer =
- 46. Перечисления в С#
- 47. Часто бывает удобным создать набор значимых имен, которые будут представлять числовые значения. // Создаем перечисление enum
- 48. // Элементы перечисления могут иметь // произвольные числовые значения enum EmpType { Manager = 10, Grunt
- 49. При компиляции, компилятор попросту подставляет вместо элементов перечисления соответствующие числовые значения. По умолчанию для этих числовых
- 50. // Вместо элементов перечисления будут // подставляться числовые значения типа byte enum EmpType : byte {
- 51. Базовый класс System.Enum Все перечисления в С# происходят от единого базового класса System.Enum. Конечно же, в
- 52. GetUnderlyingType ( ) Это статический метод, который позволяет получить информацию о том, какой тип данных используется
- 53. Enum.Format ( ) Статический метод, который может получать значимые имена элементов перечисления по их числовым значениям.
- 54. числовое значение (в нашем случае через переменную) и флаг форматирования (в нашем случае — G, что
- 55. GetValues() Статический метод, который возвращает экземпляр System.Array, при этом каждому элементу массива будет соответствовать член указанного
- 56. // А теперь выводим имена элементов // перечисления в формате string и // соответствующие им числовые
- 57. Результат работы программы
- 58. IsDefined Свойство класса System.Enum, которое позволяет определить, является ли выбранная вами символьная строка элементом указанного перечисления.
- 59. // Есть ли в EmpType элемент // Salesperson? if (Enum. IsDefined(typeof (EmpType). "Salesperson")) Console. WrlteLine(“Yes, we
- 60. Перечисления С# поддерживают работу с большим количеством перегруженных операторов, которые могут выполнять различные операции с числовыми
- 61. Структуры в С#
- 62. Определение структур в С# Cтруктуры С# можно рассматривать как некую особую разновидность классов. Для структур можно
- 63. Структуры могут содержать любое количество внутренних членов. Для структур С# не существует единого базового класса (тип
- 64. Пример // Вначале нам потребуется наше // перечисление enum EmpType : byte { Manager = 10,
- 65. public EmpType title; // Одно из полей структуры - // перечисление, определенное выше public string name;
- 66. Вполне возможно, что в реальном приложении для более удобного присвоения значений членам структуры придется определить свой
- 67. Все ваши конструкторы обязательно должны принимать один или несколько параметров. // Для структур можно определить //
- 68. public string name; public short deptID; // Конструктор public EMPLOYEE (EmpType et, string n, short d)
- 69. При помощи такого определения структуры, в котором предусмотрен конструктор, вы можете создавать новых сотрудников следующим образом:
- 70. { // Для вызова нашего // конструктора мы обязаны // использовать ключевое слово // new EMPLOYEE
- 71. Cтруктуры могут быть использованы в качестве принимаемых и возвращаемых методами параметров.
- 72. Упаковка и распаковка Упаковка и распаковка — это наиболее удобный способ преобразования структурного типа в ссылочный,
- 73. Чтобы преобразовать структуру в ссылку на объект, необходимо упаковать ее экземпляр: // Создаем и упаковываем нового
- 74. Можно использовать stan во всех случаях, когда нужен объект, и при необходимости производить распаковку: //Поскольку мы
- 75. { // Производим распаковку в структуру // EMPLOYEE для получения доступа // ко всем полям EMPLOYEE
- 76. Вызов этого метода может выглядеть следующим образом: // Передаем упакованного сотрудника на // обработку t.UnboxThisEmployee(stanInBox); Компилятор
- 77. Пользовательские пространства имен в С#
- 78. Определение пользовательских пространств имен Часто бывает очень полезным сгруппировать используемые в приложении типы данных в специально
- 79. Пример // shapeslib.cs namespace MyShapes { using System; // Класс Circle public class Circle { //
- 80. public class Hexagon // Класс Hexagon { // Более интересные методы } public class Square //
- 81. Пространство имен MyShapes действует как контейнер для всех этих типов. Можно разбить единое пространство имен С#
- 82. // circle.cs namespace MyShapes { using System; // Класс Circle class Circle { // Интересные методы
- 83. Если потребуется использовать эти классы внутри другого приложения, удобнее всего это сделать при помощи ключевого слова
- 84. public static void Main() { // Все эти объекты были определены // в пространстве имен MyShapes
- 85. Применение пространств имен для разрешения конфликтов между именами классов Пространства имен могут быть использованы для разрешения
- 86. // Еще одно пространство имен для // геометрических фигур namespace My3DShapes { using System; // Класс
- 87. // В коде есть двусмысленность! namespace MyApp { using System: using MyShapes; using My3DShapes: class ShapeTester
- 88. Проще всего избавиться от подобных конфликтов, указав для каждого класса его полное имя вместе с именем
- 89. Использование псевдонимов для имен классов Еще одна возможность избавиться от конфликтов имен — использовать для имен
- 90. // Создаем псевдоним для класса из // другого пространства имен using The3DHexagon = My3DShapes. Hexagon ;
- 91. // Создаем объект при помощи // псевдонима The3DHexagon h2 = new The3DHexagon(); } } }
- 92. Вложенные пространства имен Можно без каких-либо ограничений вкладывать одни пространства имен в другие. Такой подход очень
- 93. Пример // Классы для геометрических фигур // расположены в пространстве имен // Chapter2Types.My3DShapes namespace Chapter2Types {
- 94. // Класс 3D Circle class Circle{} // Класс 3D Hexagon class Hexagon{} // Класс 30 Square
- 96. Скачать презентацию