Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Первый семестр программирование.docx
Скачиваний:
3
Добавлен:
27.09.2019
Размер:
103.45 Кб
Скачать

В чем отличие между пространством имен и именем сборки?

Пространство имен - это логическая схема именования типов, в которой простому имени типа, например, МойТип, предшествует разделенное точками иерархическое имя. Такая схема именования находится полностью под контролем разработчика. Например, по имени типов МояКомпания.ФайловыйДоступ.А и МояКомпания.ФайловыйДоступ.В можно ожидать, что их функциональность имеет отношение к работе с файлами. .NET Framework использует иерархическую схему именования типов для объединения типов в логические категории с общей функциональностью. Средства разработки позволяют удобно просматривать типы, ссылаться на них и использовать в коде. Концепция пространства имен не имеет прямого отношения к сборке. Одна сборка может содержать типы, имена которых начинаются в разных пространствах имен, и одно пространство имен может быть реализовано в нескольких сборках. В .NET Framework пространство имен является соглашением по именовании в процессе разработки, в то время как сборка устанавливает область действия имени для типа в период выполнения.

Важнейшие системные сборки .NET Framework. Подключение сборки к приложению и обеспечение доступа к классам пространств имен в коде программы.

6. 

Структура приложения С#.

Проектом называется совокупность файлов, содержащих информацию об установках, конфигурации, ресурсах проекта, а также файлов исходного кода и заголовочных файлов.

Интегрированная среда проектирования VisualStudio.NET позволяет для создания проектов на разных языках программирования использовать различные инструментальные средства проектирования (например, Microsoft Visual Basic, Microsoft Visual C#).

Любое приложение на языке C#, разрабатываемое в среде проектирования VisualStudio.NET, реализуется как отдельный проект. Приложение на языке С# может состоять из нескольких модулей. Каждый модуль C# может содержать код нескольких классов (при создании приложения в среде Visual Studio.NET каждый класс C# автоматически помещается в отдельный модуль - файл с расширениемcs ). Среда Visual Studio 2005 позволяет создавать частичные классы ( partial class ), когда один класс содержится в нескольких файлах. Соединение всех частей класса выполняется на этапе компиляции. (Вообще, частичными также могут быть структуры и интерфейсы.)

Для консольного приложения один из классов, реализуемых модулем, должен содержать метод Main. В языке C# нет аппарата заголовочных файлов, используемого в языке С++, поэтому код модуля должен содержать как объявление, так и реализацию класса.

По умолчанию весь код класса, представляющего консольное приложение, заключается в одно пространство имен, одноименное с именем приложения.

Точкой входа в программу на языке C# является метод Main.

Этот метод может записываться как без параметров, так и с одним параметром типа string. - указателем на массив строк, который содержит значения параметров, введенных при запуске программы. В отличие от списка параметров, задаваемых при запуске С-приложения, список параметров C#-приложения не содержит в качестве первого параметра имя самого приложения.

Код метода указывается внутри фигурных скобок:

static void Main(string[] args)

{

}

Ключевое слово static определяет, что метод Main является статическим методом, вызываемым без создания экземпляра объекта типа класса, в котором этот метод определен.

Метод, не возвращающий никакого значения, указывается с ключевым словом void. Однако, метод Main может возвращать значение типа int.

Например:

static int Main(string[] args)

{

// Проверка числа введенных параметров

if (args.Length == 0)

{ Console.WriteLine("Нет параметров"); return 1; }

// Для получения значения параметра как значения типа long

// используется функция Parse

long num = Int64.Parse(args[0]);

// Тип long языка C# является псевдонимом типа Int64.

// Поэтому предыдущая запись эквивалентна записи

// long num = long.Parse(args[0]);

// Для получения значения параметра как значения

// определенного типа также можно использовать

// метод ToInt64 класса Convert

long num = Convert.ToInt64(s);

}

Компилятор C# допускает наличие метода Main сразу в нескольких классах. Но для успешной компиляции и выполнения такого приложения следует указать класс, метод Main которого следует считать точкой входа в приложение. Это можно сделать, установив опции проекта или указав опцию компилятора /main с именем класса, чей метод Main будет задействован (например: csc class1.cs class2.cs /main:Class2 ).

Для того чтобы установить опцию проекта, определяющую "стартовый" класс (Startup Object), следует открыть диалог свойств проекта Property Pages, в секции Common Properties на странице General выбрать опцию Startup Object и указать для нее имя "стартового" класса (рис. 1).

Класс приложения. Точка входа в приложение. Статический метод Мain. Передача аргументов командной строки в приложение через параметры метода Мain.

Самый глубоко вложенный блок кода на С# (си шарп) представляет собой определение  Static void Main (string[] args)  { }, которое называется методом (method). Методы (methods) представляют собой единственно возможный способ, который позволяет группировать код в логические последовательности, реализующие конкретные функциональные возможности. Проще представлять себе методы как действия, которые вы, как разработчик метода, предписываете компьютеру выполнить. Имя этого конкретного метода – Main, и это означает, что он является точкой входа программы, место, где консольное приложение начинает выполнение. Кроме того,  метод Main представляет собой точку, куда передается управление при запуске вашей программы. Соответственно, код, определяющий те действия, которые должна выполнять созданная вами программа, нужно поместить в метод Main.

В С# методы могут возвращать значения, например числа, текст или данные других типов, и тип значений, которые они могут возвращать, указывается непосредственно перед именем метода. Поскольку Main, в примере не возвращает значения, тип возвращаемого значения заменен словом void. Методы могут указывать параметры для аргументов, которые вызывающие методы или функции могут им передавать. В примере с  Main, параметр представляет собой массив строк с именем переменнойargs. Параметр args содержит все параметры, передаваемые программе из командной строки.

Ключевое слово static представляет собой модификатор, указывающий, что в течение всего времени исполнения программы должен существовать только один экземпляр метода. Фигурные скобки определяют начало и конец метода Main. В C# метод Main заключен в фигурные скобки, которые принадлежат некой сущности, называемой классом (class), который имеет имя.

Статический класс System.Console и его некоторые основные методы: запись и чтение, установка позиции и размера окна консоли, установка цвета фона и символов.

System.Console - Предоставляет стандартные потоки для консольных приложений: входной, выходной и поток сообщений об ошибках. Этот класс не наследуется.

Console.BackgroundColor - Возвращает или задает цвет фона консоли.

Console.ReadLine - Считывает следующую строку символов из стандартного входного потока.

Console.WriteLine - Записывает текущий признак конца строки в стандартный выходной поток.

7. Концепция памяти.

Стек — это структура данных, которая сохраняет элементы по принципу: первым пришел, последним ушел (полная противоположность очереди). Стек относится к области памяти, поддерживаемой процессором, в которой сохраняются локальные переменные. Доступ к стеку во много раз быстрее, чем к общей области памяти, поэтому использование стека для хранения данных ускоряет работу вашей программы. В С# размерные типы (например, целые числа) располагаются в стеке: для их значений зарезервирована область в стеке, и доступ к ней осуществляется по названию переменной.  Ссылочные типы (например, объекты) располагаются в куче.

Куча —это оперативная память вашего компьютера. Доступ к ней осуществляется медленнее, чем к стеку. Когда объект располагается в куче, то переменная хранит лишь адрес объекта. Этот адрес хранится в стеке. По адресу программа имеет доступ к самому объекту, все данные которого сохраняются в общем куске памяти (куче).  «Сборщик мусора» уничтожает объекты, располагающиеся в стеке, каждый раз, когда соответствующая переменная выходит за область видимости. Таким образом, если вы объявляете локальную переменную в пределах функции, то объект будет помечен как объект для «сборки мусора». И он будет удален из памяти после завершения работы функции.  Объекты в куче тоже очищаются сборщиком мусора, после того как конечная ссылка на них будет разрушена. 

Переменные и типы. Объявление переменной и ее инициализация.

Тип

Область значений

Размер

sbyte

-128 до 127

Знаковое 8-бит целое

byte

0 до 255

Беззнаковое 8-бит целое

char

U+0000 до U+ffff

16-битовый символ Unicode

bool

true или false

1 байт

short

-32768 до 32767

Знаковое 16-бит целое

ushort

0 до 65535

Беззнаковое 16-бит целое

int

-2147483648 до 2147483647

Знаковое 32-бит целое

uint

0 до 4294967295

Беззнаковое 32-бит целое

long

-9223372036854775808 до 9223372036854775807

Знаковое 32-бит целое

ulong

0 до 18446744073709551615

Беззнаковое 32-бит целое

float

±1,5*10-45 до ±3,4*1033

4 байта, точность — 7 разрядов

double

±5*10-324 до ±1,7*10306

8 байт, точность —16 разрядов

decimal

12 байт, точность — 28 разрядов

В дополнение к этим примитивным типам С# может иметь объекты типа enum и struct. 

Переменная — это расположение в памяти объекта определенного типа. В приведенных выше примерах х и у — переменные. Переменные могут иметь значения, которыми они проинициализированы, или эти значения могут быть изменены программно.  Назначение значений переменным Чтобы создать переменную, вы должны задать тип переменной и затем дать этому типу имя. Вы можете проинициализировать переменную во время ее объявления или присвоить ей новое значение во время выполнения программы. Вот пример программы, который в первом случае использует инициализацию для присвоения значения переменной, во втором случае использует присвоение значения переменной с помощью оператора «=»

Существует три разновидности константы: литералы, символические константы и перечисления

Базовые скалярные (типы-значение) в C#. Класс System.ValueType и производные от него типы-структуры. Значение по умолчанию для переменной уровня класса (поля) и переменной уровня метода. Оператор присваивания и его разновидности.

8. Числовые структурные типы, булевский тип и тип System.Void.

 Типы, определяемые с помощью ключевого слова struct, являются типами значений; все встроенные числовые типы являются structs(структурными). То есть, можно сказать, что все числовые типы являются структурными (хранятся в стеке, в отличии от ссылочных типов, например string, которые хранятся в общей куче, а в стеке хранится только ссылка.

Булевский тип данных – bool или System.Boolean возвращает только два значения – true или false.

Void(System.Void) – структура. Задает тип возвращаемого значения для метода, не возвращающего значение. При использовании в качестве возвращаемого типа метода ключевое слово void обозначает, что этот метод не возвращает какого-либо значения.

Статические поля и методы этих структурных типов.

Их блять куева туча по каждому типу и перечислять не буду . Но во всех есть поля типа MaxValue наибольшее возможное значение. MinValue – наименьшее значение.

Среди методов, которые мы изучали, нашел Equals (сравнивает два объекта) - Возвращает значение, позволяющее определить, представляют ли этот экземпляр и заданный объект одно и то же значение.

В качестве примера:

double double1 = .33333;

double double2 = 1/3;

Console.WriteLine(double1.Equals(double2)); // Скажет «false»

ToString - Преобразует числовое значение данного экземпляра в эквивалентное строковое представление с использованием указанного формата. (Эквивалентно Convert.ToString) только пишется немног по другому (так как метод). Разбираемся:

double[] numbers= {1054.32179, -195489100.8377, 1.0437E21,

-1.0573e-05};

string[] specifiers = { "C", "E", "e", "F", "G", "N", "P",

"R", "#,000.000", "0.###E-000",

"000,000,000,000.00###" };

Console.WriteLine(number.ToString(specifier));

Класс System.Math и его статические методы и свойства.

Math - Предоставляет константы и статические методы для тригонометрических, логарифмических и иных общих математических функций.

У Класса есть два поля:

Match.E - Представляет основание натурального логарифма, определяемое константой e. Значение этого поля равно 2.7182818284590452354 (запомнить обязательно! :D )

Match.Pi – скажете Леонтьеву выводит размер пиписьки программиста, поставит автоматом  А так, это значение 3,14. Хотя может у кого то и совпадет…