
- •12. Фундаментальные принципы ооп
- •13. Методы
- •14. Конструкторы и деструкторы
- •15. Структуры и перечисления
- •16. Свойства и поля класса
- •18. Анонимные типы
- •20. Расширяющие методы.
- •19. Перегрузка операций в классе. Явное и неявное преобразование типов. Ограничения на преобразование типов.
- •17. Статические поля, методы, конструкторы, классы.
- •2. Типы данных
- •3. Базовые типы
- •Унарные операции Можно определять в классе следующие унарные операции:
- •Бинарные операции
- •5.Выражения (порядок их вычисления, тип результата, оператор присваивания).
- •6.Операторы ветвления (if, switch, case, break , goto case).
- •Оператор break
- •Оператор goto-оператор безусловного перехода. Когда в программе встречается оператор goto, ее выполнение переходит непосредственно к тому месту, на которое указывает этот оператор.
- •7. Операторы цикла (for, while, do-while, foreach, break continue).
- •8. Обработка исключений (операторы обработки исключений, класс Exception, создание объектов Exception, захват исключения, последовательность обработки исключений, классы Debug и Trace)
- •9. Массивы (одномерные, многомерные и ступенчатые массивы, класс Array).
- •Многомерные массивы
- •Ступенчатые массивы
- •10. Создание и подключение сборок. Пространства имен (ключевые слова using, namespace)
- •11. Сложение:
- •14. Структурные блоки платформы .Net: cli, clr, cls, cts.
- •17. Таблица приоритетов операций, соответствующая Common Language Specification (cls)
- •21. Интерфейс программирования приложений WinForms.
- •22. Интерфейс программирования приложений wpf.
- •24.Кодирование символов (ascii, utf, utf-8, utf-16)
- •3.Вопросы по c# часть 1
- •22 Делегаты
- •23 События
- •24 Наследование классов
- •25 Интерфейсы
- •26 Шаблоны и интерфейс iEnumerable
- •27 Динамический тип данных
- •Статический класс Environment.
- •2) Класс DriveInfo.
- •3) Классы для работы с каталогами (папками) (System.Io.Directory, System.Io.DirectoryInfo)
- •9.2.3. Создание подпапок с помощью класса DirectoryInfo
- •9.3. Работа с классом Directory
- •9.4. Работа с классом DriveInfo
- •Классы для работы с файлами (System.Io.File, System.Io.FileInfo).
- •9.1. Абстрактный базовый класс FileSystemInfo
16. Свойства и поля класса
Поля (field) – обычно скрытые данные класса (внутренне состояние)
Поля класса
Состояние объектов класса (а также структур, интерфейсов) задается с помощью переменных, которые называются полями (fields).
При создании объекта – экземпляра класса, в динамической памяти выделяется участок памяти, содержащий набор полей, определяемых классом, и в них записываются значения, характеризующие начальное состояние данного экземпляра.
Объявление полей выполняется следующим образом:
[<режим_доступа>] [модификаторы] <тип> <имя>;
Общим правилом является создание закрытых полей, имеющих режим доступа private. Данный режим задается полям по умолчанию.
Любое воздействие на состояние объекта класса выполняется с использованием свойств или методов класса, которые контролируют последствия этих воздействий.
Если полям класса не задается значение при объявлении, то они автоматически инициализируются значениями по умолчанию.
Для значащих переменных – это нулевое значение,
Для строк – это пустая строка,
Для ссылочных переменных – это стандартное значение null.
Например, в классе Person заданы следующие поля:
private string name; // задается значение ""
private int age; // задается значение 0
private double salary; // задается значение 0.0
Свойства класса
Весьма полезный гибрид поля и методов: поле, доступ к которому и присваивание которому – программируемые операции
Используются для:
Реализации элементов данных, которые не могут быть изменены (для этого достаточно просто не включать метод set в описание свойства)
Проверок перед присваиванием (например, проверок полномочий)
Реализации вычисляемых (активных) значений
Пример:
public int Age
{
set {if (value > 0) _age = value;}
get {return(_age);}
}
18. Анонимные типы
Анонимные типы позволяют описать тип данных без формального описания класса
Например:
var book1 = new
{
ISBN = “978-0-470-17661-0”,
Title=”Professional Windows Vista Gadgets Programming”,
Author = “Wei-Meng Lee”,
Publisher=”Wrox”
};
Теперь book1 является объектом с 4 свойствами: ISBN , Title , Author , and Publisher.
Можно использовать имена переменных при назначении значений свойствам, например:
var Title = “Professional Windows Vista Gadgets Programming”;
var Author = “Wei-Meng Lee”;
var Publisher = “Wrox”;
var book1 = new { ISBN = “978-0-470-17661-0”, Title, Author, Publisher };
20. Расширяющие методы.
Расширяющий метод (extension method) это статический метод статического класса, который можно вызывать как будто он метод экземпляра другого класса
Например: можно создать расширяющий метод с именем ToDouble, который является статическим методом в статическом классе названный StringConversions, но который будет вызываться для объектов типа string.
Напоминание: Есть два типа методов:
Статические методы – вызываются с только после имени класса.
Array.Sort(ar);
Методы экземпляров класса – вызываются только после ссылки на объект класса.
ar.Length();
Пример:
\ static class MyExtensions
{
// данный метод позволяет у любой целой переменной поменять цифры в обратном порядке
// например, k = 56, то будет возвращаться, число 65.
public static int ReverseDigits(this int i)
{
// преобразуем в строку и преобразуем все символы в массив
char[] digits = i.ToString().ToCharArray();
// теперь переставляем элементы массива в обратном порядке
Array.Reverse(digits);
// преобразуем обратно массив символов в строку
string newDigits = new string(digits);
// и наконец возвращаем измененную строку Finally, return the modified string back as an int.
int rc = int.Parse(newDigits);
return rc;
}
}
Пример использования:
int k = 58;
int kr = k.ReverseDigits(); // kr = 85
Расширяющие методы для типа int:
static class Extensions
{
// удвоение значения
public static int Mult2(this int i)
{ i *= 2; return i; }
// утроение значения
public static int Mult3(this int i)
{ i *= 3; return i; }
}
…
int n =5;
int m = n.Mult3(); // m = 15