c# desktop. Занятие 01

44
Темы лекции: Введение. Обзор C#. Практическое задание: Базовые понятия языка C# Тренер: Игорь Шкулипа, к.т.н. Платформа .Net и язык программирования C#. Занятие 1

Upload: igor-shkulipa

Post on 21-Mar-2017

121 views

Category:

Education


2 download

TRANSCRIPT

Page 1: C# Desktop. Занятие 01

Темы лекции: Введение. Обзор C#.

Практическое задание: Базовые понятия языка C#

Тренер: Игорь Шкулипа, к.т.н.

Платформа .Net и язык программирования C#.

Занятие 1

Page 2: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 2

Курс «Платформа .Net и язык программирования C#»Курс состоит из трех основных модулей:

1. Базовые понятия ООП и языка программирования С#• Обзор C#• ООП на C#• Перегрузка операций и обработка исключений• Стандартный ввод-вывод• Обобщения• Строки, массивы, коллекции• Делегаты, события, анонимные методы, лямбда-выражения

2. Организация взаимодействия с базами данных иприложениями• Windows Forms• XML• Windows Presentation Foundation• ADO.Net• COM Interop• LINQ

3. Дополнительные темы• Динамические типы• Многопоточность в C#• Модульное тестирование ПО (unit testing)• Паттерны проектирования

Page 3: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 3

Время и оценка результатов курса

Курс состоит из 25 занятий, общей длительностью 100 часов аудиторнойработы.

Оценка теоретической части:1. Два промежуточных теста (максимальная оценка - 100 баллов)2. Результирующий тест (максимальная оценка - 100 баллов)

Оценка практической части:1. Групповой проект (максимальная оценка – 100 баллов)2. 15 лабораторных работ (максимальная средняя оценка - 100

баллов)

Курсовой проект:1. На протяжении курса студенты выполняют курсовой проект по

индивидуальной теме (максимальная оценка - 100 баллов)

Page 4: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 4

Результирующий рейтинг

>= 70% < 70%

• TP – средняя оценка за промежуточные тесты (макс. 100)• TR – оценка за результирующий тест (макс. 100)• LR – средняя оценка за выполнение лабораторных работ (макс. 100)• GP – средняя оценка за групповой проект (макс. 100)• CP – оценка за курсовой проект (макс. 100)

Результат курса = 0.15*TP + 0.15*TR + 0.2*LR +0.2*GP+ 0.3*CP

Page 5: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 5

Литература

1. Джеффри Рихтер / CLR via C#. Программирование на платформеMicrosoft .NET Framework 4.0 на языке C#: Питер, 2011, 928 с.

1. Троелсен Эндрю / Язык программирования C# 5.0 и платформа.NET 4.5, 6-е изд.: Пер. с англ.: Изд. дом «Вильямс», 2013. - 1312c.

1. Трей Неш / C# 2010: ускоренный курс для профессионалов:Пер. с англ.: Изд. дом «Вильямс», 2010. - 592 c.

1. http://msdn.microsoft.com/library/vstudio/

1. Руководство Microsoft по проектированию архитектурыприложений. 2-е издание.

Page 6: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 6

Объектно-ориентированное программирование

ООП – это парадигма программирования, основанная напредставлении предметной области в виде взаимосвязанныхабстрактных объектов и их реализаций.

В ООП вводится понятие Класса – пользовательского типаданных, объединяющего данные и методы их обработки.

Объектом называется экземпляр класса.

Автомобиль– это класс (тип данных)

Автомобиль Bentley Continental GT черного цвета – это объект,или экземпляр класса «Автомобиль»

Page 7: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 7

Объекты

Объекты характеризуются понятиями состояния, поведения и идентичности.

Состояние объекта характеризуется перечнем всех свойств данногообъекта и текущими значениями каждого из этих свойств.

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

Поведение объекта строится из его операций (определенное воздействиеодного объекта на другой ). Существует три вида операций• Модификатор - операция, которая изменяет состояние объекта• Селектор - операция, считывающая состояние объекта, но не

меняющая состояния• Итератор - операция, позволяющая организовать доступ ко всем

частям объекта в строго определенной последовательности

Идентичность - это такое свойство объекта или такой набор свойств,который отличает его от всех других объектов.

Page 8: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 8

Члены и методы класса

Члены-данные (поля) (data members) хранят всю необходимуюинформацию об объекте, формируют его состояние,характеристики и т.п.

Изменение состояния объекта или его характеристик связано сизменением данных, которые в нем содержатся.

Метод объекта (methods) – программный код, выполненный ввиде функции, реагирующий на передачу объектуопределенного сообщения.

Вызов метода объекта может приводить к изменению егосостояния (значение членов-данных), а может и не приводить

Класс может содержать один или более методов, позволяющихосуществлять манипуляцию данными объекта

Page 9: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 9

Свойства

Свойство – составляющая часть объекта, доступ к которойосуществляется как к члену объекта, но таковым не является(реализуют принцип инкапсуляции для членов объекта).

В некоторых объектно-ориентированных языкахпрограммирования (например, в C++) свойства, как элементязыка, отсутствуют.

В этом случае в класс добавляют методы, посредством которыхосуществляется доступ к необходимым переменным класса.

Page 10: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 10

Абстракция данных

Объекты представляют неполную информацию о реальныхсущностях предметной области.

Абстракция позволяет оперировать с объектном на уровне,адекватном решаемой задаче.

Высокоуровневые обращения к объекту могут обрабатываться спомощью вызова функций и методов низкого уровня.

В основе реализации этого принципа лежит использованиеабстрактных классов интерфейсов.

Page 11: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 11

Инкапсуляция

Инкапсуляция – объединение в одной оболочке данных иметодов их обработки, а так же способность объекта скрыватьвнутреннее устройство своих полей и методов.

Согласно данному принципу, класс должен рассматриваться какчерный ящик.

Внешний пользователь не знает детали реализации объекта иработает с ним только путем предоставленного объектоминтерфейса (или открытых методов доступа).

Следование данному принципу может уменьшить число связеймежду классами и упростить их независимую реализацию,модификацию и тестирование.

Page 12: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 12

Композиция классов

Композиция (а так же ассоциация и агрегирование) – механизмдля создания нового класса путем объединения несколькихобъектов существующих классов в единое целое.

При агрегировании между классами действует «отношениепринадлежности»

• У машины есть кузов, колеса и двигатель

• У человека есть голова, руки, ноги и тело

• У треугольника есть вершины

Вложенные объекты обычно объявляются закрытыми (private)внутри класса-агрегата

Page 13: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 13

Наследование

Наследование – это механизм ООП, позволяющий описать новыйкласс на основе уже существующего.

При наследовании свойства и функциональность родительскогокласса наследуются новым классом.

Класс-наследник имеет доступ к публичным (public) изащищенным (protected) методам и полям класса родительскогокласса.

Класс-наследник может добавлять свои данные и методы, а такжепереопределять методы базового класса

Page 14: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 14

Основные термины

Родительский или базовый класс (класс-родитель) – класс,выступающий в качестве основы при наследовании.

Класс-потомок (дочерний класс, класс-наследник) – класс,образованный в результате наследования от родительскогокласса.

Иерархия наследования – отношения между родительскимклассом и его потомками.

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

Реализация класса – совокупность приватных методов иданных класса

Page 15: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 15

Виды наследования

По типу наследования:

• Открытое (public) наследование

• Закрытое (private) наследование

• Защищенное (protected) наследование

По количеству базовых классов:

• Одиночное наследование (один базовый класс)

• Множественное наследование (два и более базовых классов)

Page 16: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 16

Полиморфизм

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

Использование полиморфизма достигается при присвоенииуказателю на базовый класс адреса производного класса спереопределенными методами.

Типы-наследники неявно приводимы к базовому классу.

Page 17: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 17

Microsoft .NET Framework

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

На сегодняшний день платформа .NET Framework включает в себя:

1. Компиляторы четырех официальных языков: С#, VB.NET, ManagedC++ (управляемый C++) и JScript .NET

2. Объектно-ориентированную среду CLR (Common Language Runtime),совместно используемую этими языками для создания приложенийпод Windows и для Internet

3. Ряд связанных между собой библиотек классов под общим именемFCL (Framework Class Library)

Page 18: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 18

Архитектура Microsoft .NET Framework

Page 19: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 19

C# и CLR

Самым важным компонентом платформы .NET Framework является CLR(Common Language Runtime), предоставляющая среду, в которойвыполняются программы.

Главная ее роль заключается в том, чтобы обнаруживать и загружатьтипы .NET и производить управление ими в соответствии сполученными командами. CLR включает в себя виртуальнуюмашину, во многих отношениях аналогичную виртуальной машинеJava. На верхнем уровне среда активизирует объекты, производитпроверку безопасности, размещает объекты в памяти, выполняетих, а также запускает сборщик мусора.

Код на языке C# компилируется в, так называемый CIL ( CommonIntermediate Language) - стандартизированный промежуточныйязык, чем-то похожий на объектно-ориентированный ассемблер.

Код на CIL выполняется виртуальной машиной CLR, а результат в видешестнадцатеричных команд отправляется на выполнениеоперационной системой.

Page 20: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 20

JIT-компилятор

Среда CLR – это не интерпретатор, как может показаться на первыйвзгляд.

В действительности, CLR компилирует код IL в машинный код, преждечем выполнить его, то есть осуществляет JIT (Just in Time)компиляцию.

Этот процесс может показаться неэффективным, но, на самом деле,это обозначает лишь одноразовое понижение производительностидля каждого участка программы. Как только код один разскомпилирован, CLR сохраняет его и выполняет каждый раз, когдаэто необходимо.

Код, выполняемый CLR называется управляемым кодом (managedcode)

Page 21: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 21

Преимущества управляемого кода

• Управляемые приложения могут потреблять меньше памяти.IL-код занимает меньше места в памяти, чем «родной» код, то естьколичество памяти у управляемых приложений, обычно, меньше,чем у «родных».

• JIT-компиляции подвергается только тот код, которыйвыполняется. IL-код более компактен, чем машинный, по этомусокращение компилируемого кода до минимума сокращает объемпамяти приложения.

• Код более оптимизирован. Код после JIT-компиляцииоптимизируется непосредственно для платформы, на которой онвыполняется.

• Среда CLR отслеживает частоту вызовов. Если CLR видит, чтонекоторый код долгое время не вызывался, то она можетосвободить память, занимаемую им. При следующем обращении,этот код будет перекомпилирован.

• Автоматическая сборка мусора. Нет необходимости в ручномуправлении памятью и освобождении занятых ресурсов.

Page 22: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 22

Сборки

Сборка (assmebly) – это дискретная единица многократноиспользуемого кода внутри CLR. Сборки похожи на обычные DLLбиблиотеки или исполняемые EXE файлы.

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

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

Сборки содержат метаданные, описывающие содержащиеся в нихтипы.

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

Page 23: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 23

Назначение сборкам имен

• Строгое именование. Такая сборка имеет имя, состоящее изчетырех частей: краткое имя сборки, номер версии, идентификаторкультуры и хеш-маркер.

• Частичное именование. Сборка имеет имя, в котором опущенынекоторые части строгого имени.

GAC (Global Assembly Cache) – некоторое подобие реестра сборок.Регистрация сборки в GAC подобна регистрации приложения всистемном реестре.

Если сборка зарегистрирована со строгим именованием, то она можетбыть использована всеми приложениями системы.

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

Page 24: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 24

Метаданные

Метаданные – это расширяемый формат описания содержимого сборок.

Можно определять собственные специальные атрибуты, которые легковключаются в метаданные типа.

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

С помощью метаданных можно исследовать определения типов иприсоединенные к ним атрибуты.

Метаданные могут сообщить о том, поддерживает некоторый классопределенный метод, прежде чем пытаться взывать его, или порожденли этот класс от какого-либо другого класса.

Процесс просмотра метаданных называется рефлексией. Для этого служатоператор typeof (работает во время компиляции) или метод GetType()

(работает во время выполнения), которые возвращают объект типаSystem.Type.

Page 25: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 25

Сборщик мусора

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

Сборщик мусора не проходит по всем находящимся в памяти объектам и неизучает их. Вместо этого CLR выполняет проход по определенной группеобъектов. В .NET эти группы называются поколениями:• Поколение 0. Новый созданный объект, который еще никогда не

помечался как кандидат на удаление;• Поколение 1. Объект, который уже однажды пережил сборку

мусора. Сюда обычно попадают объекты, которые были помечены дляудаления, но все-таки не удалены из-за того, что места в памяти(куче) было достаточно;

• Поколение 2. Объекты, которые пережили более одной очисткипамяти сборщиком мусора.

Очевидно, что чем выше поколение объекта, то тем дольше он находится впамяти. Более того, вероятность дальнейшего его существования в кучебольше, чем у объекта более низкого поколения.

Page 26: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 26

Язык C#

Язык C# был разработан, как основной язык программирования дляплатформы Microsoft .NET Framework.

Разработан в 1998—2001 годах группой инженеров под руководствомАндерса Хейлсберга в компании Microsoft.

Синтаксис C# основан на языках C++ и Java – в то время,доминирующих языках в разработке программного обеспечения.

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

Page 27: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 27

Базовые типы данных

СТS ТипИмя псевдонима в

С#Описание

System.Object object Класс , базовый для всех типов (CTS)

System.String string Строка

System.SByte sbyte 8 -разрядный байт (со знаком)

System.Byte byte 8 -разрядный байт (без знака)

System.Int16 short 16-разрядное число (со знаком)

System.UInt16 ushort 16-разрядное число (без знака)

System.Int32 int 32-разрядное число (со знаком)

System.UInt32 uint 32-разрядное число (без знака)

System.Int64 long 64-разрядное число (со знаком)

System.UInt64 ulong 64-разрядное число (без знака)

System.Char char 16-разрядный символ (Unicode)

System.Single float 32-разрядное число с плавающей точкой, (стандарт IEEE)

System.Double double 64-разрядное число с плавающей точкой, (стандарт IEEE)

System.Boolean bool Булевское значение (true/false)

System.Decimal decimal Данный 128 разрядный тип используется в основном, когда требуется крайне высокая точность (до 28 знака)

Встроенные числовые типы являются структурами, и к их свойствам и методам можно получить доступ.

Page 28: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 28

Выражения

Page 29: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 29

Выражения

Page 30: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 30

Типы CLR

• Типы значений (value types). Определяются с помощьюключевого слова struct. Экземпляры типов значений – это

единственные экземпляры, которые могут располагаться в стекеприложения. В управляемой куче они могут располагаться, еслиони являются членами ссылочных типов. Во многом аналогичныструктурам С++.

• Ссылочные типы (reference types). Определяются с помощьюключевого слова class, в стеке приложения находится ссылка наэкземпляр. Сами экземпляры располагаются в управляемой куче.

Page 31: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 31

Типы значений

Типы значений являются производными от System.ValueType,являющегося производным от System.Object. Типы, производные отSystem.ValueType, имеют особое поведение в среде CLR.

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

Существует две категории типов значений: структура иперечисление.

Типы значений являются запечатанными, что означает, например, чтонельзя произвести тип от System.Int32, и нельзя определитьструктуру для наследования от любого пользовательского классаили структуры, поскольку структура может наследовать только отSystem.ValueType.

Однако структура может реализовать один или несколькоинтерфейсов. Можно выполнить приведение типа структуры в типинтерфейса; это приведет к операции упаковки-преобразованиядля создания программы-оболочки структуры внутри объектассылочного типа в управляемой куче.

Page 32: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 32

Структуры

Ключевое слово struct используется для создания собственныхпользовательских типов значений. Обычно структура используетсякак контейнер для небольшого набора связанных переменных

public struct Coords

{

public int x, y;

public Coords(int p1, int p2)

{

x = p1; y = p2;

}

}

Page 33: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 33

Перечисления

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

public enum FileMode

{

CreateNew = 1,

Create = 2,

Open = 3,

OpenOrCreate = 4,

Truncate = 5,

Append = 6

}

enum Days

{

Sunday, Monday, Tuesday,

Wednesday, Thursday,

Friday, Saturday

};

enum Months : byte

{

Jan, Feb, Mar, Apr, May,

Jun, Jul, Aug, Sep, Oct,

Nov, Dec

};

Page 34: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 34

Ссылочные типы

Часто определяются с помощью ключевого слова class. Фактически

переменные ссылочных типов подобны переменным типовзначений, которые имеют тип и содержат указатель на объект вкуче.

Все ссылочные типы неявно наследуются от System.Object (object).

По соглашению термином «объект» обозначается экземплярссылочного типа, а термином «значение» - типа значений.

Переменные ссылочного типа инициализируются либо с помощьюоперации new, либо присваиванием переменной значения

совместимого типа.

object o1= new object();

object o2= o1;

CLR управляет всеми ссылками на объекты в куче, в том числевыполняет сборку мусора, так что нет необходимости в ручномосвобождении памяти.

Page 35: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 35

Инициализация переменных по умолчанию

Когда создается объект, система инициализирует его поля,значениями по умолчанию:

1. Поля, относящиеся к типам значений, инициализируютсяустановкой всех битов в 0.

1. Значением по умолчанию для ссылок на объекты является null.

1. Поля логического типа инициализируются значением false.

Page 36: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 36

Неявно типизированные переменные

Объявляя локальную переменную с помощью ключевого слова var, выпросите компилятор зарезервировать некоторый участок памятидля хранения этой переменной.

На этапе компиляции у компилятора достаточно информации о типебудущего экземпляра, так как его тип указан явно.

var MyList = new List<int>();

MyList.Add(1); MyList.Add(2); MyList.Add(3);

foreach(var i in MyList)

{

Console.WriteLine(i);

}

(!) Замечание: Неявно типизированные переменные должны бытьпроинициализированы.

var WrongValue; // выдаст ошибку компиляции

Page 37: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 37

Преобразование типов

1. Присвоение "большему типу" значения "меньшего типа". Безопасноеприсвоение, гарантирует сохранение значения.

int IntValue = 12345678;

long LongValue = 1234567890;

LongValue=IntValue;

2. Присвоение "меньшему типу" значения "большего типа“ должно бытьявным. Потенциально опасное присвоение, грозит потерей информации.

int IntValue = 12345678;

long LongValue = 1234567890;

IntValue = (int) LongValue;

3. Ссылка на DerivedType может быть неявно преобразована к BaseType,если DerivedType унаследован от BaseType.

BaseType DT = new DerivedType();

4. Ссылка на BaseType должна преобразовываться к DerivedType явно. Нотакое явно преобразование может сгенерировать InvalidCastException вовремя выполнения программы, если CLR не сможет выполнить такоепреобразование.

BaseType BT = new BaseType();

DerivedType DT = new DerivedType();

DT = (DerivedType)BT; // Небезопасно!!!

Page 38: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 38

Операции as и is

Операция is возвращает булевское значение, говорящее о том, можноли преобразовать данное выражение в указанный тип:

long LValue=123;

bool IsInt= LValue is int;

DerivedClass DC=new DerivedClass();

bool IsBase=DC is BaseClass;

Операция as подобна is, но она возвращает ссылку на ужепреобразованный объект указанного типа, либо null, если такоепреобразование невозможно.

BaseClass BC=DC as BaseClass;

Page 39: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 39

Пространства именПространства имен (namespace) предоставляют программистам возможность

логичной взаимосвязи классов и других типов. Само понятие namespaceскорее является логическим, нежели физическим.

namespace NameSpace

{

public struct Name

{

// Код структуры ...

}

}

Для использования имен из пространства имен существует директива using.using NameSpace;

using System;

using System.Collections;

using Microsoft.Office.Interop.Excel;

Еще одним применением ключевого слова using в C# является назначениепсевдонимов классам и пространствам имен:

using alias = NameSpace;

using alias = System.Collections;

...

alias.ArrayList AL = new alias.ArrayList();

Page 40: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 40

Операторы

Синтаксис операторов C# аналогичен синтаксису операторов С++.

if-else, while, do-while, for, switch

В операторе switch, обязательно должен присутствовать операторbreak или другая передача управления.

break, continue, goto, return, throw

Оператор foreach используется для итерации по коллекции илимассиву объектов.

string[] strings=new string[5];

...

foreach (string item in strings)

{

Console.WriteLine(item);

}

Page 41: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 41

Нововведения версий C#

C# 2.0• Поддержка обобщений• Поддержка анонимных методов• Поддержка итераторов• Поддержка частичных типов (partial)

C# 3.0• LINQ• Автореализуемые свойства (get, set)

• Расширяющие методы

C# 4.0• Динамические типы (dynamic)• Облегчение взаимодействия с COM• Ключевые слова in и out

C# 5.0• Поддержка выполнения асинхронных

функций с помощью двух новых ключевыхслов – async и await

Page 42: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 42

Создание нового проекта

Page 43: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 43

Hello, World!!!

// Используемые пространства имен

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

// Пространство имен приложения

namespace HelloWorld

{

// Основной класс программы

class Program

{

// Статичный метод – точка входа в приложение

static void Main(string[] args)

{

// Вывод в консоль "Hello, World!!!"

Console.WriteLine("Hello, World!!!");

// Ожидание нажатия клавиши

Console.ReadKey();

}

}

}

Page 44: C# Desktop. Занятие 01

http://www.slideshare.net/IgorShkulipa 44

Лабораторная работа №1. Базовые понятия языка C#

Создать консольное приложение на языке C#, которое реализуетследующие задания:

1. Вычислить an, а – действительное число. При этом, не пользуясьникакими другими арифметическими операциями, кроме умножения.

2. В числе х, содержащем более двух, знаков зачеркнули его вторуюцифру. Когда к образованному при этом числу справа приписаливторую цифру числа х, то получилось число n. По заданному n найтичисло х (значение n вводится с клавиатуры, n >= 100 ).