15.52M
Category: programmingprogramming

Ведение в C# и платформу .net

1.

Введение в C#
и платформу .NET

2.

.NET Framework
.NET Core
C#
• Первая версия языка C# вышла вместе с релизом Microsoft Visual Studio .NET в
феврале 2002 года. Текущей версией языка является версия C# 11, которая вышла 8
ноября 2022 года вместе с релизом .NET 7
• Cледует различать .NET Framework, который предназначен преимущественно для
Windows, и кросcплатформенный .NET 7 (NET.Core)
• Framework – это инфраструктура среды выполнения программ.
Нечто, определяющее инструментарий разработчика, особенности разработки и
выполнения программного кода на данной платформе.
• Framework осуществляет взаимодействие с операционной системой и прикладными
программами
• Framework – это языки программирования, множества базовых классов,
унифицированные интерфейсы пользователя, парадигмы программирования
• Framework – это методы доступа к базам данных,
средства поддержки распределённых приложений

3.

Роль платформы
.NET
• Поддержка нескольких языков. Основой платформы является общеязыковая среда исполнения
Common Language Runtime (CLR), благодаря чему .NET поддерживает несколько языков: наряду с
C# это также VB.NET, C++, F#, а также различные диалекты других языков, привязанные к .NET,
например, Delphi.NET, и языки с динамической типизацией Ruby, Python.
При компиляции код на любом из этих языков компилируется в сборку на общем языке CIL
(Common Intermediate Language) - своего рода ассемблер платформы .NET.
CLS (Common Language Specification) – общая спецификация языков программирования.
• Кроссплатформенность. .NET является переносимой платформой . Например, .NET 7
поддерживается на большинстве современных ОС Windows, MacOS, Linux. Используя различные
технологии на платформе .NET, можно разрабатывать приложения на языке C# для самых разных
платформ - Windows, MacOS, Linux, Android, iOS.
• Мощная библиотека классов .NET Framework class library (FCL).
.NET представляет единую для всех поддерживаемых языков библиотеку классов.
• Разнообразие технологий. Общеязыковая среда исполнения CLR и базовая библиотека классов
являются основой для целого стека технологий, которые разработчики могут задействовать при
построении тех или иных приложений: ADO.NET и Entity Framework Core, WPF и WinUI, Windows
Forms. Для разработки кроссплатформенных мобильных и десктопных приложений Xamarin/MAUI. Для создания веб-сайтов и веб-приложений - ASP.NET и т.д. К этому стоит добавить
активной развивающийся и набирающий популяность Blazor - фреймворк, который работает
поверх .NET и который позволяет создавать веб-приложения как на стороне сервера, так и на
стороне клиента.
• Производительность. Согласно ряду тестов веб-приложения на .NET 7 в ряде категорий сильно
опережают веб-приложения, построенные с помощью других технологий. Приложения на .NET 7
в принципе отличаются высокой производительностью.

4.

Ядро платформы
.NET
1) Common language runtime (CLR)
2) .NET Framework class library (FCL).
• CLR (Common Language Runtime) – cреда времени выполнения или Виртуальная Машина.
Обеспечивает выполнение сборки.
Под Виртуальной Машиной понимают абстракцию операционной системы высокого уровня,
которая обеспечивает выполнение (управляемого) программного кода.
• Управляемый код – программный код, который при своём выполнении способен использовать
службы, предоставляемые CLR.
• Сама CLR состоит из двух главных компонентов: ядра (mscore.dll) и библиотеки базовых классов
(mscorlib.dll)
Функции CLR:
управление кодом (загрузка и выполнение)
управление памятью при размещении объектов, изоляция памяти приложений,
проверка безопасности кода,
преобразование промежуточного языка в машинный код, IL
доступ к метаданным,
обработка исключений, включая межъязыковые исключения, взаимодействие между
управляемым и неуправляемым кодом (в том числе и COM–объектами),
поддержка сервисов для разработки (отладка и т.д.)

5.

Пример управляемого кода
.NET
for (int i = 0; i < N; i++)
{
if (this.buttons[i] != null)// if (panel1.Controls.Contains(buttons[i]))
{
this.buttons[i].MouseClick -= click;//открепляем события кнопки
panel2.Controls.Remove(buttons[i]);
buttons[i].Dispose();
}
Удаление
}
for (int i = 0; i < N; i++)
{
buttons[i] = new Button();
Создание
buttons[i].MouseClick += click;
buttons[i].Size = new Size(butW, butH);
buttons[i].ForeColor = Color.FromArgb(255, (byte)(128 + clr[i].R), (byte)(128 +
clr[i].G), (byte)(128 + clr[i].B));
buttons[i].Text = string.Format(i.ToString() + "
" + "{0:0.####} - {1:0.####}", Fmin +
(t * i), Fmin + (t * (i + 1)));
buttons[i].Location = new Point(butLeft, (i - 1) * (butH) + dtop);
buttons[i].Parent = panel2;
buttons[i].TabStop = false;
buttons[i].Tag = i;
}

6.

Ядро .NET Framework
Common Language Runtime
Class Library
Development Frameworks
Обычно так понимают
термин Framework

7.

Как работает CLR ?
Base Class Library support
(Поддержка библиотеки базовых классов)
Thread Support
(Поддержка потоков)
COM Marchaler
(Сопряжение с COM)
Type Checker
(Контроль типов)
Exception Manager
(Управление исключениями)
Security Engine
(Обеспечение безопасности)
IL Компиляторы
Platform invoke
(Платформенный вызов)
Debug Engine
(Обеспечение отладки)
Code Manager
(ВЫПОЛНЕНИЕ кода)
Class Loader (Загрузчик классов)
Garbage Collector
(Сборщик мусора)

8.

Как работает CLR ?
Код приложения .NET на
одном из языков
программирования .NET
Компилятор .NET
Сборка в виде файлов DLL или EXE (Содержит IL и
Метаданные)
Библиотеки базовых классов
(mscorlib.dll и другие)
Ядро среды
выполнения (mscoree.dll)
Загрузчик классов
JIT компилятор
Инструкции ассемблера
ВЫПОЛНЕНИЕ ПРИЛОЖЕНИЯ

9.

Как работает CLR ?
Утилита ilasm предназначена для компиляции в сборку .NET
Утилита ildasm предназначена для декомпиляции сборки .NET и получения из нее кода IL.
Для использования данной утилиты надо установить nuget-пакет Microsoft.NETCore.ILDAsm.

10.

.Net Core
.Net Framework:
ASP.Net MVC
Web API, Web Forms
Xamarin
Silverlight
Entity Framework
.Net Core:
CoreCLR (Runtime, GC, Jitter, баз. типы)
CoreFX - Framework Labraries
(платформонезависимые библиотеки)
CLI - Application host and command line interface,
Dotnet.exe
Entity Framework
MVC (MVC, Web API и Web Pages)
Платформа .Net Core отличается от .Net модульностью, кроссплатформенностью,
возможностью применения облачных технологий, и тем, что в ней произошло
разделение между библиотекой CoreFX и средой выполнения CoreCLR.
.NET Core — модульная платформа. Каждый её компонент обновляется через
менеджер пакетов Nuget, а значит можно обновлять её модули по отдельности, в
то время как .NET Framework обновляется целиком. Каждое приложение может
работать с разными модулями и не зависит от единого обновления платформы.
CoreFX — это библиотека, интегрированная в .NET Core. Среди её компонентов:
System.Collections, System.IO, System.Xml.
CoreCLR — это среда выполнения, включающая в себя JIT-компилятор, встроенный
сборщик мусора и другие компоненты.

11.

Основы работы в Visual Studio
Microsoft Visual Studio Community 2022 Версия 17.4.3
VisualStudio.17.Release/17.4.3+33205.214
Microsoft .NET Framework Версия 4.8.04161
ASP.NET and Web Tools 17.4.326.54890
ASP.NET and Web Tools
Microsoft JVM Debugger 1.0
Python с Pylance 17.0.22263.6
Предоставляет IntelliSense, проекты, шаблоны, отладку, интерактивные окна и
другие вспомогательные функции для разработчиков Python.
Python — поддержка профилирования 17.0.22263.6
Visual Studio IntelliCode 2.2 Разработка с использованием искусственного
интеллекта для Visual Studio.
Visual F# Tools 17.4.0-beta.22512.4
Диспетчер пакетов NuGet в Visual Studio. Дополнительные сведения о NuGet см.
на веб-сайте https://docs.nuget.org/
Инструменты C# 4.4.0-6.22580.4
Средства TypeScript 17.0.10921.2001
Средства Службы приложений Azure, версия 3.0.0 17.4.326.54890

12.

Создание проекта .NET

13.

Диспетчер пакетов Nuget

14.

Создание репозитория Git

15.

Конструктор Windows Forms
свойства
Вкладка
события

16.

Компоненты WPF и Windows

17.

Файл Form.Disigner.cs

18.

Открытие окна свойств

19.

Рефакторинг метода

20.

Окно свойств проекта

21.

Отладка. Точки останова.
Шаг с
заходом F11
Точка
останова
Значения
переменных

22.

Форматирование кода

23.

Создание собственных примеров кода

24.

Пространства имен

25.

Пространство имен
Пространства имен позволяют организовать код программы в логические блоки, объединить и
отделить от остального кода некоторую функциональность, которая связана некоторой общей
идеей или которая выполняет определенную задачу.
Для определения пространства имен применяется ключевое слово namespace, после которого
идет название название пространства имен:
namespace Base
{
class Person
{
string name;
public Person(string name) => this.name = name;
public void Print() => Console.WriteLine($"Имя: {name}");
}
}
Для использования классов из других пространств имен нужно писать полное имя класса.
Но это добавляет в код избыточность - особенно, если пространство имен содержит множество
классов, которые мы хотим использовать. И чтобы не писать полное имя класса, мы можем
просто подключить пространство имен с помощью директивы using:
Using Base;
Точкой входа в программу на языке C# является метод Main. Именно с этого метода начинается
выполнение программы на C#. И программа на C# должна обязательно иметь метод Main.
Однако может возникнуть вопрос, какой еще метод Main, если, например, Visual Studio 2022 по
умолчанию создает проект консольного приложения со следующим кодом:
Console.WriteLine("Hello, World!");

26.

Пространство имен
Могут ли пространства имен быть вложенными?
namespace Base
{
namespace PersonTypes
{
class Person
{
string name;
public void Print()
{
Console.WriteLine($"Имя: {name} ");
}
}
Начиная с .NET 6 и C# 10 можно определять пространства имен на уровне файла.
namespace Base;//в отдельном файле Base.cs
class Person
{
string name;
public Person(string name) => this.name = name;
public void Print() => Console.WriteLine($"Имя: {name} ");
}

27.

Пространство имен
Определение глобальных пространств в отдельном файле:
В Visual Studio 2022 мы можем добавить в проект новый файл с кодом C# и в нем определить
набор подключаемых пространств имен. Например, добавим в проект файл (вкладка класс),
который назовем GlobalUsings.cs и в котором определим следующее содержимое:
global using System.Text;
global using System.Reflection;
global using Base;
И этот набор пространств имен будет автоматически подключаться во все файлы кода в проекте.
Подключение пространств имен по умолчанию.
Начиная с .NET 6 в проекте по умолчанию подключается ряд наиболее часто используемых
пространств имен, поэтому нам их не надо явно подключать. Эта настройка действует на уровне
всего проекта.
Console.WriteLine("Hello");//ошибки нет
Если мы запустим проект на выполнение, то после компиляции в папке obj/Debug/net6.0 можно
будет увидеть файл [Имя_проекта].GlobalUsings.g.cs. Если мы откроем этот файл, то увидим там
следующее содержимое:
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Threading;

28.

Процесс компиляции
Составные блоки .NET Framework приложений
Коллекция типов и ресурсов, которые формируют логическую
единицу функциональности
MyAssembly .dll ИЛИ .exe
MyClassA
MyResource
Сборка подписана
цифровым
сертификатом
MyClassB
V 1.1.254.1
Версия сборки
<major>.<minor>.<build>.<revision>

29.

Как CLR загружает, компилирует и запускает приложения
Сборки содержат IL код, который не является исполняемым
CLR загружает IL код из сборки и конвертирует его в машинный
код, исполняемый компьютером
1
Загрузка сборки, на которую ссылается приложение
2
Верификация и компиляция сборки в машинный код
3
Запуск сборки в виде исполняемого файла

30.

Структура консольного приложения
Вносим System в поле видимости
using System;
Объявление пространства имен
namespace MyFirstApplication
{
class Program
Объявление класса Program
{
static void Main(string[] args)
{
}
}
}
Main method declaration

31.

Способы ввода и вывода данных в консольном приложении
Метод System.Console включает:
Clear()
Read()
ReadKey()
ReadLine()
Write()
WriteLine()
using System;
...
Console.WriteLine("Hello there!“);

32.

Лучшие методы комментирования приложений C#
Начинайте процедуру с блока комментария
В длинных процедурах поясняйте пункты
Объявляя переменную, поясните, для чего
вы будете ее использовать
В структуре принятия решения поясняйте, как
и почему вы принимаете это решение
// Это комментарий в отдельной строке.
string message = "Hello there!"; // Это комментарий в строке.

33.

Что такое WPF?
WPF это база для создания Windows
приложений, основанная на
объединении:
Особенности WPF
Расширенная поддержка для
разработки клиентских
приложений
Медиа-контента
Простота проектирования UI
Документов
GUI
Использование XAML
Поддержка совместимости со
старыми приложениями

34.

Структура WPF приложения
Декларативный файл XAML
<Window x:Class="WpfApplication1.MainWindow” xmlns=“..“ xmlns:x=“.."
Title="MainWindow" Height="350" Width="525">
<Grid>
</Grid>
</Window>
Code-behind Visual C# файл
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}

35.

Библиотека элементов управления WPF
WPF элементы управления:
Button
Label
Canvas
StackPanel
ComboBox
TextBox
Grid
Пример Button:
<Button Name="myButton" BorderBrush="Black" BorderThickness="1"
Click="myButtonOnClick" ClickMode="Press">
Click Me
</Button>

36.

Создание простого WPF приложения
Visual Studio позволяет:
1
Создать новое WPF приложение
2
Добавить элементы управления в WPF приложение
3
Задать свойства элементам управления
4
Добавить обработчики событий к элементу управления
5
Добавить код для реализации бизнес-логики

37.

Что такое XML Комментарии?
Использование XML комментариев для генерации
справочной документации для вашего приложения
/// <summary> The Hello class prints a greeting on the screen
/// </summary>
public class Hello
{
/// <summary> We use console-based I/O. For more information
/// about
/// WriteLine, see <seealso cref="System.Console.WriteLine"/>
/// </summary>
public static void Main( )
{
Console.WriteLine("Hello World");
}
}

38.

Обычные тэги(tags) XML комментариев
<summary> … </summary>
<remarks> … </remarks>
<example> … </example>
<code> … </code>
<returns> … </returns>
<summary> - краткое описание
<remarks> - длинное описание
<example> - пример того, как следует использовать элемент
<code> - спецификация кода приложения
<returns> возвращает значение члена

39.

Генерация документации из XML комментариев
Генерация XML-файла с помощью Visual Studio
Генерация XML-файла с помощью csc.exe
<?xml version="1.0"?>
<doc>
<assembly> <name>MyProject</name></assembly>
<members>
<member name="T:Hello">
<summary> The Hello class prints a greeting on the screen
</summary>
</member>
<member name="M:Hello.Main">
...
</member>
</members>
</doc>

40.

Отладка в Visual Studio
Отладка является неотъемлемой частью разработки приложения
Visual Studio предоставляет несколько средств отладки
Start Debugging
Break All
Step Out
Stop Debugging
Step Over
Step Into
Restart

41.

Использование Точек Останова
Когда вы запускаете приложение в режиме отладки у вас есть
возможность приостановить выполнение и перейти в режим
приостановки
Visual Studio позволяет вам:
Выбрать строку кода для установки точки останова
Определить точку останова и отключить ее
Определить точку останова и удалить ее

42.

Шаг с заходом и Шаг с обходом
Вы можете выполнять код шаг за шагом, наблюдая
за процессом выполнения программного кода
Visual Studio позволяет:
Делать шаг с заходом в текущее выражение
Делать шаг с обходом текущего выражения
Делать шаг с выходом из текущего выражения

43.

Использование окон отладки
Visual Studio содержит несколько окон, которые помогут
вам отладить ваше приложение
Threads
QuickWatch
Call Stack
Locals
Modules
Output
Memory
Processes
Immediate
English     Русский Rules