Вы находитесь на странице: 1из 8

1 ГЛАВА

IDE (integrated development environment, интегрированная среда разработки) — это программа


для редактирования кода, управления файлами и публикации проектов.
MainPage.xaml -Этот файл содержит XAML-код, определяющий пользовательский интерфейс
главной страницы
MainPage.Xaml.cs -Здесь находится код C#, управляющий поведением главной страницы.
App.xaml.cs - Код C# из этого файла запускается при загрузке или возобновлении работы
приложения.
XAML (X произносится как Z и рифмуется с «camel») — это язык разметки, позволяющий
создавать пользовательские интерфейсы для приложений

2 ГЛАВА
Методом называется именованный блок кода.
 
окно Properties - Alt-Enter
 
Запускается компилятор, то есть инструмент, читающий код программы и преобразующий его в
исполняемый файл. Этот файл с расширением .exe представляет собой программу, которую
запускает Windows. Он создается внутри папки bin, вложенной в свою очередь в папку проекта.
 
API или прикладной интерфейс программирования представляет собой набор инструментов для
доступа и управления системой. API встроены во многие системы, но особенно они важны в таких
операционных системах, как Windows.
 
CLR, или виртуальная машина, является своего рода «переводчиком» между программой и
компьютером, на котором она работает.
 
Для быстрого перехода между вкладками пользуйтесь комбинацией клавиш Ctrl-Tab.
 
Структура программы: Для каждой программы определяется свое пространство имен, чтобы
отделить код от классов .NET Framework и Windows Store API.
Класс содержит фрагмент вашей программы (очень маленькие программы могут состоять из
одного класса).
Класс включает один или несколько методов. Методы всегда принадлежат какому-либо классу.
Методы, в свою очередь, состоят из операторов.
Порядок методов в файле класса не имеет значения: метод 2 можно легко поместить перед
методом 1.
 
Любая программа на C# использует классы. Класс может делать что угодно, но большинство
классов заточено на определенное действие.
 
Для выполнения различных действий классы используют методы. Методы производят некое
действие на основе входных данных.
 
Данные в метод передаются при помощи параметров. Именно параметры влияют на поведение
метода. Некоторые методы возвращают значение. Ключевое слово void перед именем метода
означает, что он не возвращает никаких данных.
 
Именно операторы составляют тело любого метода. При вызове метода сначала выполняется
первый оператор, потом следующий и т. д. При достижении конца списка или оператора return
метод завершает работу, и программа продолжает работу после вызвавшего метод оператора.
 
Рассмотрим два файла с классами из программы PetFiler2 (Домашний любимец). В них
содержатся три класса: Dog (Собака), Cat (Кошка) и Fish (Рыбка). Так как все они принадлежат
пространству имен PetFiler2, операторы в методе Dog.Bark() (Собака лает) могут вызывать
операторы Cat.Meow() (Кошка мяукает) и Fish.Swim() (Рыбка плавает). Распределение различных
имен пространств и классов по файлам не влияет на действия, выполняемые после запуска
 
Классы из одного пространства имен могут «видеть» друг друга, даже находясь в разных
файлах.Для помещения класса в разные файлы пользуйтесь ключевым словом “partial”.
 
Все программы работают с данными. Данные могут быть представлены в виде документа,
графического фрагмента, видео игры или мгновенного сообщения. Для их хранения программа
использует переменные.
 
Объявить (declare) переменную — значит указать программе ее тип и имя. Благодаря типам
невозможно скомпилировать программы в случае, когда вы сделали ошибку и пытаетесь сделать
нечто лишенное смысла, например вычесть Fido из 48353
.
Отсутствие у переменных значения является препятствием для компиляции. Этой ошибки легко
избежать, объединив в один оператор объявление переменной и присвоение ей значения.
number +=10 - Оператор += означает, что к значению переменной number нужно прибавить 10.
 
Функция Watch помогает отслеживать значения переменных на каждом этапе выполнения кода.
 
Циклы (loops) — они заставляют программу выполнять набор операторов — до тех пор, пока
указанное вами условие не примет значение true (или false!).
В цикле while операторы внутри фигурных скобок выполняются до тех пор, пока условие имеет
значение true.
Цикл for состоит из трех операторов. Первый задает начало цикла. Третий оператор цикла будет
выполняться, пока соблюдается условие, заданное вторым оператором.
Операторы if/else инициируют действия при выполнении или невыполнении заданных условий. В
большинстве случаев речь идет о проверке равенства.
 
Программа состоит из множества операторов, но они не могут выполняться одновременно.
Операторы принадлежат разным классам. Как же при запуске программы определить, какой
оператор выполнять первым? Компилятор просто не будет работать при отсутствии метода
Main(), который и называется точкой входа. Первый оператор этого метода и будет
выполняться самым первым.
 
Подсказка: && означает «И». Именно этот оператор позволяет соединить вместе несколько
условий. Результат будет истинным только при одновременном выполнении этих условий.

3 ГЛАВА
Объекты - позволяют структурировать код наиболее удобным образом. Вы же можете
сосредоточиться на обдумывании путей решения, так как вам не нужно тратить время на
написание кода. Правильное использование объектов позволяет получить интуитивно понятный
код, который при необходимости можно легко отредактировать.
 
Объектами (objects) называются инструменты C#, позволяющие работать с набором одинаковых
сущностей. Именно благодаря им, один раз написав класс Navigator, Майк сможет использовать
его нужное количество раз.
 
Методы состоят из операторов. Некоторые из них выполняют все входящие операторы и
заканчивают работу. Другие же возвращают какое-то значение. Это значение принадлежит к
определенному типу (например, string или int).
Оператор return прерывает работу метода. Если метод не возвращает значение, тип
возвращаемого значения объявляется как void, присутствие этого оператора является
необязательным. Но если метод возвращает значение, без оператора return не обойтись.
Метод, возвращающий значение, обязан включать в себя оператор return. Если в объявлении
метода указано public string, значит, оператор return возвращает значение типа string.
После оператора return программа возвращает управление оператору, вызывающему метод.
Метод, при объявлении которого было указано public void, не возвращает значение. Но оператор
return может использоваться для прерывания такого метода: if (finishedEarly) { return; }.
 
Диаграмма классов. В ней перечисляются все входящие в класс методы. Это наглядное
представление выполняемых классом функций.
 
Для создания объекта достаточно ключевого слова new и имени класса.Так как он получен из
класса, то содержит все входившие в класс методы.
 
Класс можно представить как копию объекта. Скажем, для построения пяти одинаковых домов в
коттеджном поселке архитектору не нужно рисовать пять одинаковых чертежей. Для выполнения
задачи вполне достаточно одного.
 
Оператор new позволяет создать произвольное количество объектов одного класса. При этом все
методы исходного класса становятся частью объекта.
 
Экземпляр, сущ. — образец, вещь, подобная другим. Функция поиска и замены находит все
экземпляры слова и заменяет их.
 
Создание нового объекта на основе класса называется созданием экземпляра класса.
 
При вызове метода не создавался новый экземпляр Talker.
Вы написали только:
Talker.BlahBlahBlah("Hello hello hello", 5);
Именно так вызываются статические методы, с которыми вы работали до сих пор. Если убрать
модификатор static из объявления метода BlahBlahBlah(), вызов метода окажется уже
невозможным без создания экземпляра Talker. Впрочем, это единственное отличие статических
методов.
Вы можете передавать им параметры, они возвращают значения и принадлежат определенным
классам. Модификатором static можно отметить целый класс. Все входящие в этот класс методы
также должны быть статическими. Добавив в статический класс нестатический метод, вы сделаете
компиляцию невозможной.
 
Единственным отличием статического метода от нестатического является невозможность
создавать его экземпляры.
 
Метод - это то что объект делает. Поле - это то, что объект знает.
 
Поведение объекта определяется его методами, поля используются для отслеживания его
состояния.
 
Для добавления полей достаточно объявить переменные вне методов. Так, все экземпляры будут
иметь свои копии этих переменных.
 
class Clown {
public string Name;//поле
public int Height;//поле
public void TalkAboutYourself() { //метод
MessageBox.Show(“My name is ” + Name + “ and I’m ” + Height + “ inches tall.”); }
 
Создаваемые объекты находятся в так называемой куче (heap) — области динамической памяти,
выделяемой на стадии исполнения программы. Применение оператора new автоматически
резервирует место в памяти под хранение данных.
 
Новые объекты добавляются в кучу — динамически распределяемую память.
Так как команда new не используется, новый объект не создается. Редактируется только
информация, которая уже имеется в памяти.
 
Инициализаторы объектов экономят ваше время и увеличивают компактность и читабельность
кода.

4 ГЛАВА
Форма представления, при которой число хранится в виде мантиссы и показателя степени,
называется числом с плавающей точкой (запятой).
 
'\n' — это перенос строки, '\t' — знак табуляции
 
Не все переменные попадают в кучу. Значимые типы хранят данные в другой части памяти,
которая называется стеком.
 
Компилятор не позволяет присваивать значения несовпадающих типов, даже если переменная
попадает в правильный диапазон. Приведение типа — это объяснение компилятору, что вы
знаете о несовпадении типов, но в данном конкретном случае осознанно осуществляете
операцию присваивания.
decimal myDecimalValue = 10;
int myIntValue = (int) myDecimalValue;
 
Получается, любое число может быть приведено к любому типу. Но это не означает сохранения
значения. Приведем переменную типа int со значением 365 к типу byte. Число 365 выходит за
границы диапазона этого типа. Но вместо сообщения об ошибке произойдет циклическое
присваивание: например, 256 после приведения к типу byte превратится в 0, 257 — в 1, а 365 — в
109. Как только вы дойдете до 255, произойдет переход к нулевому значению.
 
Фактически «зацикливание» — это операция деления по модулю. Переключите калькулятор в
Инженерный режим, наберите 365 Mod 256, и вы получите 109.
 
Оператор + автоматически преобразовывал данные. Когда вы добавляли число и логическое
значение к строке, указанное вами значение автоматически преобразовывалось к типу string.
Операторы + (или *, / или -), примененные к значениям различных типов, автоматически
преобразовывают меньший тип в больший.
 
После числа, которое присваивается переменной типа float, нужно добавлять F, чтобы указать
компилятору на его принадлежность к типу float.
 
Есть два случая, когда вам не требуется делать приведение типов.
Автоматически эта процедура выполняется, во-первых, при проведении арифметических
операций :
 
//Параметр типа short вычитается из параметра типа long, а оператор = преобразует результат к
типу double.
 
long l = 139401930;
short s = 516;
double d = l - s;
d = d / 123.456;
MessageBox.Show("Ответ " + d);
Во-вторых, автоматическое преобразование происходит при объединении строк оператором +.
Все числа при этом преобразуются к типу string.
 
Параметр — это то, что вы определяете внутри метода, а аргумент — что в него передается.
Метод с параметром типа int может принять аргумент типа byte
 
Ошибка «неверный аргумент» означает, что вы попытались вызвать метод с переменными, тип
которых не совпадает с его параметрами.
 
Переменной, параметру или полю можно назначить произвольное значение при помощи типа
object.
 
Объекты — это всего лишь еще один тип переменных.
Если программе нужны целые большие числа, используйте тип long. Для целых малых чисел
используйте тип short. Если вам нужны значения Да/Нет, используйте тип boolean. А если вам
нужно нечто лающее, используйте тип Dog. Во всех случаях вы работаете с переменными.
 
Для создания нового объекта вы пишете new Guy(). Но этого недостаточно; в куче появится объект
Guy, но у вас не будет к нему доступа. Вам требуется ссылка на объект. Здесь на помощь приходят
переменные ссылочного типа — это переменные типа Guy, имеющие имя, например joe. В итоге
получается, что joe — это ссылка на только что созданный объект Guy. Именно она используется
для доступа к объекту.
 
Создание ссылки подобно наклеиванию стикера: вы помечаете объект, чтобы получить
возможность ссылаться на него в дальнейшем.
 
Подозреваем, что на вашей кухне есть отдельные емкости для сахара и соли. Если поменять
местами наклейки на них, еда будет несъедобной, ведь содержимое емкостей при этом местами
не поменялось. Аналогично действуют ссылки. Ярлыки можно поменять местами и заставить
указывать на разные вещи, но какие именно данные и методы будут доступны, определяет только
сам объект, а не ссылка на него.
 
Для работы с хранящимися в памяти объектами используются ссылки, которые являются
переменными. Тип этих переменных определяется классом объекта, на который они
ссылаются.
 
Объект остается в куче, пока на него есть хотя бы одна ссылка. Как только последняя ссылка
исчезает, объект удаляется.
 
Массивы (array) - группа переменных, которая обрабатывается как единый объект. Вы получаете
возможность хранить и редактировать большие наборы данных.
 
Каждый элемент масссива - это переменная.
 
Число в квадратных скобках называется индексом (index) и используется для обращения к
элементам массива. Индекс первого элемента всегда равен нулю.
 
форма — это объект.
 
Только что созданная ссылка, которая пока никуда не указывает, имеет по умолчанию значение
null.
 
Виртуальной машиной называется способ изоляции работающих программ от остальной
оперативной системы. Виртуальная машина управляет используемой памятью. Она следит за
всеми объектами, и как только последняя ссылка на какой-нибудь из объектов исчезает, она
освобождает оперативную память, которая была выделена под этот объект.
 
Ссылки — это способ доступа к методам и полям. Создав ссылку на объект Dog, вы получаете
возможность пользоваться любыми методами, определенными для этого объекта. Для
нестатических методов Dog.Bark() и Dog.Beg() можно определить ссылку spot. После чего для
доступа к ним достаточно написать spot.Bark() и spot.Beg(). Ссылки позволяют редактировать поля
объекта. Например, для внесения изменений в поле Breed достаточно написать spot.Breed.
 
this — это специальная переменная, используемая только внутри объекта. Она ссылается на поля
и методы выбранного экземпляра. Это полезно при работе с классом, методы которого
обращаются к другим классам. Объект может передать ссылку на себя другому объекту. Если Spot
вызывает один из методов Rover при помощи параметра this, объект Rover получает ссылку на
объект Spot.
 
Экземпляры объектов используют ключевое слово this для ссылки на самих себя.
 
 
For Это цикл, выполняющий оператор или блок операторов, пока определенное выражение не
примет значение false.
Class Класс — это определение объекта. Классы имеют свойства и методы
Public Ключевое слово, дающее уровень доступа с максимальными правами. Public class может
использоваться любым другим классом.
New Оператор, создающий новый экземпляр объекта.
Using Определяет пространства имен, предустановленные и созданные вами классы, которые
используются в программе.
If Оператор, выбирающий другие операторы по результатам проверки условия.
While Цикл while выполняется до тех пор, пока условие имеет значение true.
Namespase Пространство имен — это логическое понятие, объединяющее связанные друг с
другом классы и типы.

5 ГЛАВА
Метод ToString() преобразует переменные в строки. Аргумент «c» при этом преобразуется в
локальную денежную единицу. Аргумент «f3» форматирует результат в виде типа decimal с тремя
знаками после запятой, «0» (ноль) превращает результат в целое число, «0%» — в целое с
процентами, а «n» дает число с запятой в качестве разделителя групп разрядов.
 
private - Поля объектов, помеченные этим модификатором, были доступны для чтения и
редактирования любым другим объектом. Модификатор private делает поле доступным только
изнутри объекта (или из другого объекта этого же класса).
 
Закрытие доступа к данным с последующим написанием кода для их использования называется
инкапсуляцией (encapsulation).
Инкапсулированный — заключенный в защитный слой или мембрану. Подводники полностью
инкапсулированы в подводной лодке.
 
Единственным способом получения информации из закрытых полей являются методы общего
доступа, которые возвращают данные.

Иногда возникает необходимость скрыть некую информацию от остальной части


программы.
 
Инкапсуляция означает скрытие информации одного класса от другого. Она помогает
предотвратить появление ошибок.
 
Инкапусуляция делает классы
Легкими в применении Вы уже знаете, что поля нужны для отслеживания данных. И большинство
из них применяют методы для обновления информации — эти методы не нужны никакому
другому классу. Часто поля, методы и свойства одного класса совершенно не нужны в других
частях программы. Пометив их словом private, вы уберете их из окна IntelliSense.
Легкими в управлении Помните программу Кэтлин? Проблема возникала потому, что форма
имела непосредственный доступ к полю. Если бы поле было закрытым, программа работала бы
правильно.
Гибкими Иногда по прошествии времени возникает необходимость внести в программу
изменения. С хорошо инкапсулированными классами не возникает вопросов по их дальнейшему
использованию
 
Свойства (properties) объединяют функции полей и методов. Они используются для чтения и
записи вспомогательного поля (backing field). Именно та
к называется поле, заданное свойством.
 
существует особый метод, называемый конструктором (constructor). Это самый первый метод,
который выполняется при создании класса оператором new. Передавая конструктору параметры,
вы указываете значения, которые требуется инициализировать. Но этот метод не имеет
возвращаемого значения, так как напрямую не вызывается. Параметр передается оператору new.
А как вы уже знаете, этот оператор возвращает объект, поэтому конструктору возвращать уже
ничего не нужно.
 
Чтобы снабдить класс конструктором, добавьте метод, имеющий имя класса и не имеющий
возвращаемого значения.
 
Свойства (методы чтения и записи) — это особый вид методов, запускаемых при попытке
прочитать свойство или сделать запись в него.
часто

6 ГЛАВА
Если существует несколько классов, являющихся частными случаями другого, более общего
класса, можно заставить их наследовать от этого класса. При этом они становятся классами,
производными (subclass) от базового (base class).
 
Наследование в C# является копией процессов, происходящих в реальном мире. Иерархия
присутствует в виде перехода от общих вещей к частностям. В модели классов классы,
расположенные ниже в иерархии, наследуют от вышестоящих.
 
Наследовать, гл. иметь признаки родителя или предка. Она хочет, чтобы ребенок унаследовал
ее большие карие глаза
 
Предок, суперкласс и базовый класс обозначают одно и то же. Аналогичная ситуация с
терминами «потомок» и «подкласс».
 
Когда производный класс меняет поведение унаследованного метода, говорят о перекрытии
(override).
 
Иерархия, сущ. расположение групп одна под другой в соответствии с их рангом. Президент
компании прошел весь путь от курьера до верхов корпоративной иерархии.
 
При наследовании все поля, свойства и методы базового класса автоматически добавляются в
производный класс.
 
При наследовании имена производного и базового классов разделяются двоеточием (:).
Производный класс получает все поля, свойства и методы базового класса.
 
Иногда нужно, чтобы производный класс унаследовал не все поведения базового, а только часть
их. Чтобы изменить унаследованное ненужное поведение, достаточно перекрыть (override) метод.
Чтобы производный класс получил возможность перекрывать методы, используйте ключевое
слово virtual.
 
Используйте ключевое слово override для добавления в производный класс методов,
замещающих методы унаследованные. Перекрывать можно методы, помеченные в базовом
классе словом virtual.
 
Методам, параметры которых работают с базовым классом, можно передавать экземпляры
производ ного класса.
 
Если имя и сигнатура создаваемого метода совпадают с именем и сигнатурой наследуемых
методов, новый метод производного класса скрывает метод базового класса.
 
Чтобы перекрыть метод базового класса, всегда помечайте его ключевым словом virtual. И
всегда используйте ключевое слово override, когда хотите перекрыть метод в производном
классе. Если этого не сделать, некоторые методы внезапно могут оказаться скрытыми.
 
Воспользуйтесь ключевым словом base для вызова перекрытого метода, и вы получите доступ как
к новой, так и к старой версии метода Eat().

Вам также может понравиться