
- •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
11. Сложение:
+ |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
10 |
+
Х |
2^X |
0 |
1 |
1 |
2 |
2 |
4 |
3 |
8 |
4 |
16 |
5 |
32 |
6 |
64 |
7 |
128 |
8 |
256 |
9 |
512 |
10 |
1024 |
11 |
2048 |
12 |
4096 |
13 |
8192 |
14 |
16384 |
15 |
32768 |
16 |
65536 |
-------------------------
11 0 0 1 1 1 0 0
Вычитание: 0-0=0
1-0=1
1-1=0
0-1=1
и заем единицы старшего разряда
Пример:
× |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
× |
|
|
|
1 |
1 |
1 |
0 |
|
|
|
|
1 |
0 |
1 |
|
|
|||||||
+ |
|
|
|
1 |
1 |
1 |
0 |
|
1 |
1 |
1 |
0 |
|
|
|
|
|||||||
|
1 |
0 |
0 |
0 |
1 |
1 |
0 |
Деление
чисел
в двоичной системе счисления производится
по тем же правилам, что и для десятичных
чисел, даже еще проще, поскольку мы имеем
всегда только две цифры - 0 и 1.
Например
делим 111102 на
11010:
1. Для перевода десятичного числа в восьмеричную систему его необходимо последовательно делить на 8 до тех пор, пока не останется остаток, меньший или равный 7. Число в восьмеричной системе записывается как последовательность цифр последнего результата деления и остатков от деления в обратном порядке.
2
. Для
перевода двоичного числа в десятичное
необходимо его записать в виде многочлена,
состоящего из произведений цифр числа
и соответствующей степени числа 2, и
вычислить по правилам десятичной
арифметики:
Д
ля
перевода двоичного
числа
в
шестнадцатеричное
двоичное число нужно разбить на группы
по четыре цифры (тетрады).
12. Под типом данных понимается набор доступных значений, которые может хранить переменная данного типа, и разрешенный набор операций над этими значениями. В языке C# различает две категории типов данных: значащие типы (value types) и ссылочные типы (reference types). Основное различие между ними состоит в том, что значащие типы хранят непосредственно свои значения, а ссылочные типы непосредственно хранят ссылки на свои значения. К значащим типам относятся:
встроенные типы (описанные в библиотеке FCL), которые хранят одиночные значения, как например, int – целые; float – вещественные значения; bool – логические; структуры – сложные типы, которые во многом сходны с классами, но значения которых хранятся в стеке
Типы, описываемые разработчиками. Кроме встроенных типов, которые предоставляются в языке C#, программист может описывать и использовать свои собственные (пользовательские) типы. Имеются следующие пользовательские типы: 1. классы (class); 2. структуры (struct); 3. перечисления (enum); 4.интерфейсы (interface); 5. делегаты (delegate).
Классы позволяют разработчику создать собственные типы, которые могут использоваться точно так же, как и встроенные типы. Описание классов имеет следующую структуру:
[режим_доступа] [partial] class имя_класса { // описание элементов класса }
Классы это основные пользовательские типы данных.
Экземпляры класса – Объекты. Классы описывают все элементы объекта (данные) и его поведение (методы), также устанавливают начальные значения для данных объекта, если это необходимо. При создании экземпляра класса в памяти создается копия данных этого класса. Созданный таким образом экземпляр класса называется объектом. Экземпляр класса создается с помощью оператора new. Для получения данных объекта или вызова методов объекта, используется оператор . (точка). Student s;
s = new Student();
s.Name = “Иванов А.”;
Класс и объект — это разные вещи, хотя в некоторых случаях они взаимозаменяемы. Класс определяет тип объекта, но не сам объект. Объект — это конкретная сущность, основанная на классе и иногда называемая экземпляром класса. При создании экземпляра класса ссылка на этот объект передается программисту.
Структура – это частный случай классов, объекты которых хранятся в стеке, а не в "куче", как у классов. В структурах нельзя инициализировать поля при их объявлении, а также нельзя объявлять конструкторы без параметров. Структуры похожи на классы по своему описанию и ведут себя сходным образом, хотя и имеют существенные различия в выполнении операции присваивания. При выборе между структурой и классом следует руководствоваться ckедующими правилами: если у класса число полей относительно невелико, а число возможных объектов относительно велико, делай-те его структурой. В этом случае память объектам будет отводиться в стеке, не будут создаваться лишние ссылки, что позволит повысить эффективность работы.
struct PointS { // структура описания точек
public float x, y;
public PointS(float xx, float yy)
{ x = xx; y = yy; }
public override string ToString() {
return "{X:" + x + ";" + "Y:" + y + "}"; }}
Метод представляет собой блок кода, содержащий набор инструкций. Программа инициирует выполнение операторов, вызывая метод и задавая необходимые аргументы метода. В C# все инструкции выполняются в контексте метода. Метод Main является точкой входа для каждого приложения C#, и вызывается он средой CLR при запуске программы. Параметры заключаются в круглые скобки и разделяются запятыми. Пустые скобки указывают на то, что у метода нет параметров. Следующий класс содержит три метода.
abstract class Motorcycle
{ public void StartEngine() {/* Method statements here */ }
protected void AddGas(int gallons) { /* Method statements here */ }
public virtual int Drive(int miles, int speed) { /* Method statements here */ return 1; }
public abstract double GetTopSpeed(); }
Доступ к методам: class TestMotorcycle : Motorcycle
{ public override double GetTopSpeed()
{ return 108.4; }
static void Main()
{ TestMotorcycle moto = new TestMotorcycle();
moto.StartEngine();
moto.AddGas(15);
moto.Drive(5, 20);
double speed = moto.GetTopSpeed();
Console.WriteLine("My top speed is {0}", speed); } }
Поле - это переменная любого типа, которая объявлена непосредственно классе или структуре. Класс или структура могут иметь поля экземпляра или статические поля, либо поля обоих типов. Поля экземпляра определяются экземпляром типа. Поля обычно хранят данные, которые должны быть доступными нескольким методам класса и должны храниться дольше, чем время существования любого отдельного метода. Поля объявляются в блоке класса путем указания уровня доступа поля, за которым следует тип поля и имя поля:
public class CalendarEntry
{
private DateTime date;
public string day;
public DateTime Date
{
get
{return date;}
set
{ if (value.Year > 1900 && value.Year <= DateTime.Today.Year)
{ date = value; }
else
throw new ArgumentOutOfRangeException(); }}
public void SetDate(string dateString)
{ DateTime dt = Convert.ToDateTime(dateString);
if (dt.Year > 1900 && dt.Year <= DateTime.Today.Year)
{ date = dt;}
else
throw new ArgumentOutOfRangeException(); }
public TimeSpan GetTimeSpan(string dateString)
{
DateTime dt = Convert.ToDateTime(dateString);
if (dt != null && dt.Ticks < date.Ticks)
{ return date - dt;}
else
throw new ArgumentOutOfRangeException(); }}
13. Переменные – это именованные участки памяти, которые могут хранить: значения некоторого типа (для значащих типов, в стеке), ссылки на экземпляры некоторых классов (для ссылочных типов, ссылки на объекты, расположенные в "куче"). В C# выделяют два типа переменных: поля классов (объявляются в описаниях классов и создаются для каждого объекта) и локальные переменные методов (создаются при каждом вызове метода класса). Прежде, чем переменная может быть использована, она должна быть объявлена. Объявление переменных можно делать в любом месте программы. При объявлении переменных задается:имя (идентификаторы):Должно начинаться с буквы или подчерка (_), буква может быть из любого алфавита (unicode), количество символов не ограничено, тип (встроенный или пользовательский), могут быть заданы модификаторы (режим доступа, возможность изменения, сохранность значений). Формат объявление переменных:
<тип> <имя>;
<тип> <имя> [= <значение>]
[<модификаторы>] <тип> <имя> [= <значение>];
где [<модификаторы>] = {<режим доступа>, static, const}.
Например:
public int x = 5;
public static const int n=10;
Область видимости переменной - это та часть кода, в пределах которого доступна данная переменная. Область определяется такими правилами:
Поле (field), известное также как переменная-член класса, находится в области видимости до тех пор, пока в этой области находится содержащий поле класс;
Локальная переменная (local variable) - находится в области видимости до конца блока операторов или метода в котором она обьявлена;
Локальная переменная, которая обьявлена в операторах for, while или подобных им, видна в пределах тела цикла.
Виды переменных по области видимости:
Уровня класса (статические переменные класса)
Доступ с помощью имени класса
Время жизни – время работы программы
Доступ из всех классов (если public)
Уровня объекта класса (поля)
Доступ с помощью ссылки на объект
Время жизни – от new до удаления ссылок
Доступ в методах класса (если public то из других классов)
Уровня метода (локальные переменные)
Доступ по имени
Время жизни – выполнения метода
Доступны только в методе после объявления
public void ScopeTest() {
int n = 0;
for (int i = 0; i < 10; i++) {
Console.WriteLine(i);
} // i выходит из области видимости и удаляется
// можно объявить другу переменную с именем i
{
var i = ”другой цикл”; // строка
Console.WriteLine(i);
} // i опять выходит из области видимости
for (int i = 9; i > = 0; i--) {
Console.WriteLine(i);
} // i еще раз выходит из области видимости
return;
} // переменная n тоже выходит из области видимости