Закрыть
×
=0) { let js = text.slice(pos1, pos2); + '<\/' + "script" + '>'; arrText.push(js); // next pos1 = pos2; continue; } } } break; } return arrText; } function OpenDialog(parentDiv, urlContent) { parentDiv = document.getElementById('modal-background'); // new !!!!!!! parentDiv.appendChild(document.getElementById('modal-template')); document.getElementById('modal-background').style.display = "flex"; // !!!!! block document.getElementById('modal-template').style.display = "flex"; // !!!!! document.getElementById('modal-body').innerHTML = ""; post_url(urlContent, "", function(text_from_server) { var element = document.getElementById('modal-body'); element.innerHTML = text_from_server; // add scripts var arrJSText = get_scripts(text_from_server); for (var i=0; i
dir.by
Праздники ...
Праздники ...
День города Минска (2-ая суббота сентября) (9 и 10 сентября 2023)
Концерты, выставки ...
Концерты, выставки ...
Шоу УРАЛЬСКИЕ ПЕЛЬМЕНИ "Новогоднее"|||г. Минск 18 декабря 2026
Афишу
Спорт занятия ...
Спорт занятия ...
Занятия в тренажерном зале
Спорт занятие
Компьютер, программы...
Компьютер, программы...
Объявления ...
Объявления ...
Запустите свой прибыльный бизнес на Wildberries или Ozon!
Объявление
Новости ...
Новости ...
Форум ...
Форум ...
обсуждение...
Поиск
Концерты
Спорт
Форум
Компьютер
Компьютер, программы
→
C# (programming language)
Assembly (Assembly) in C#. Compilation. Intermediate code IL (Intermediate Language). Metadata.
посмотрели
23368
раз
обновлено: 21 June 2023
Assembly (Assembly) in C#
First, we write the code in
C#
in
Visual Studio
.
Then we compile our
C#
code in
Visual Studio
and the result is
file .exe or .dll
Note!
Assemblies are implemented as
.exe
or
.dll
files
Assemblies are the basic element of deployment, versioning, reuse, activation scopes, and access rights for a framework-based application
.NET
Assemblies provide environment information
CLR
that is needed to recognize type implementations. You can think of an assembly as a collection of types and resources that are designed to work together and form a logical unit of functionality.
Build in a single physical file
Rarely, but an assembly can consist of multiple physical files.
To create an assembly
To create an assembly, you need to compile your
C#
code using
Visual Studio
.
The compiler in
Visual Studio
does all the work:
Step 1
The compiler in
Visual Studio
compiles your
C#
files into managed modules.
Managed modules contain
IL
code (intermediate code) and metadata
Step 2
The compiler compiles managed modules into a single assembly (
.exe
or
.dll
file)
How the compiler works in Visual Studio
Step 1
Step 2
Scheme
Note!
The
CLR
environment works with assemblies.
Assemblies have the following properties:
• Assemblies are implemented as
.exe
or
.dll
files
• An assembly can be shared across multiple applications by placing it in the global assembly cache. Assemblies must have strong names in order to be included in the global assembly cache.
Learn more:
Strong-named assemblies ...
.
• Assemblies are loaded into memory only if they are actually used. If the assembly is not in use, it is not loaded. Because of this property, assemblies can be an effective tool for managing resources in large projects.
• Assembly information can be obtained programmatically by using
C# reflection...
• If you only want to load an assembly to test it, use a method such as
ReflectionOnlyLoadFrom...
Assemblies have the following components:
•
Manifesto.
The manifest contains the metadata of the assembly
•
Type Metadata
. Using this metadata, the assembly determines the location of the types in the application file, as well as where they are placed in memory
•
IL
code. Our code on
C#
is compiled into
IL
code
•
Resources
Class Assembly
Namespace:
System.Reflection
Class Properties Assembly
string
CodeBase
{ get; }
Directories and the name of the assembly file
MethodInfo
EntryPoint
{ get; }
An object that represents the entry point of this assembly. If the entry point is not found (for example, the assembly is a
DLL
library),
null
is returned
Module
ManifestModule
{ get; }
Returns the module that contains the manifest of the current assembly
IEnumerable<
Module
>
Modules
{ get; }
Returns the module that contains the manifest of the current assembly
Class Methods Assembly
object
CreateInstance
(string typeName, ...)
Creates an object by type name
Assembly
GetAssembly
(
Type
type)
Returns the loaded assembly in which the specified type is defined
Module
[]
GetLoadedModules
()
Returns all loaded modules of this assembly
Module
[]
GetModules
()
Returns all modules of this assembly
Type
GetType
(string name)
Returns type information by type name
Example:
using System;
using System.Reflection;
namespace
ConsoleApplication1
{
class
Book
{
public string Name;
public int Price;
}
class
Program
{
static void
Main
(string[] args)
{
// We get the assembly
Assembly assembly = typeof(Program).Assembly;
// Get information for type Book
// from namespace ConsoleApplication1
Type t = assembly.
GetType
("ConsoleApplication1.Book");
// iterate through all the fields of class Book
object[] fields = t.GetFields();
foreach (var value in fields)
Console.WriteLine(value);
}
}
}
Type
[]
GetTypes
()
Returns the types defined in this assembly
bool
IsDefined
(
Type
attributeType, bool inherit)
Whether the type is present in the assembly
Assembly
Load
(
AssemblyName
assemblyRef)
Loads the assembly by name
Assembly
LoadFrom
(string assemblyFile)
Loads the assembly at the path
All properties and methods Assembly ...
IL (Intermediate Language)
When we compile
C# code
,
IL
(Intermediate Language) intermediate code is created.
IL
is a processor-independent machine language developed by
Microsoft
in consultation with several commercial and academic organizations specializing in language and compiler development.
IL
is a higher-level language than most other machine languages. It allows you to work with objects and has commands for creating and initializing objects, calling virtual methods, and directly manipulating array elements. It even has exception generation and exception catching commands for error handling.
IL
can be thought of as an object-oriented machine language.
IL
is stack-oriented, meaning all of its commands put operands on the execution stack and retrieve the results from the stack. Since there are no commands for working with registers in
IL
, compiler developers can relax: there is no need to think about managing registers, and there are fewer commands in
IL
(due to the absence of the same commands for working with registers).
The
IL
commands are not associated with types either. For example, the
IL
add
command adds the last two operands stacked; There are no separate 32-bit and 64-bit versions of the command. When executed,
add
determines the types of operands on the stack and does what is required.
Пример:
IL
код
Metadata
Metadata is a set of data tables that describe what is defined in a module. There are also tables that indicate what the managed module references (for example, imported types and numbers). They extend the capabilities of technologies such as type libraries and interface description language (
IDL
) files. Metadata is always associated with a file with
IL
code, in fact it is embedded in
*.exe
or
*.dll
.
Thus, metadata is a table in which there are fields that indicate that such and such a method is in such and such a file and belongs to such and such a type (class).
TypeDef
is a record for each type defined in the module.
For example,
TypeDef #1
describes the class
SomeClass
and shows the field
Field #1
like this:
Field Name: age
method MethodName: GetAge
designer MethodName: .ctor
The notation
TypeDef #2
describes the
Program
class.
Having dealt with the basic concepts, let's see what the managed module consists of (or just our file
ConsoleApplication_Test_Csharp.exe
, which displays the age of the object on the screen):
The header indicates what type of processor the program will run on.
PE32
(for 32-bit and 64-bit operating systems) or
PE32+
(for 64-bit operating systems only)
Header
CLR
- contains information that turns this module into a managed module (flags, version
CLR
, entry points to
Main()
)
There are 2 kinds of metadata:
1) Source-defined types and members
2) Types and members that are referenced in source code
Manifesto (Manifest)
Manifesto ([skip]
Manifest
[/skip])
. If an assembly does not have a manifest, the
MSIL
code enclosed in it will not run. The manifest can be in the same file as the executable code of the assembly, or it can be placed in a separate file.
The manifest stores the following data:
•
Assembly name
•
Version number:
Main and secondary numbers. Used for versioning
•
Culture:
Information about the culture that the assembly supports
•
Strong Name Information:
Publisher's public key
•
A list of all assembly files:
The hash and name of each of the files included in the assembly
•
List of references to other assemblies
that the current build uses
•
List of type references
used by the assembly
That is, the manifest allows you to define all the files included in the assembly, map references to types, resources, assemblies with their files, and manage version control.
Note!
When the
C#
application is executed, the
CLR
runtime starts and executes
IL
code.
CLR
executes
IL
code in 2 steps:
Step 1
IL
code is compiled into processor commands (0001 0011 1101… ). This is done by the
JIT
compiler in the
CLR
environment.
JIT
The compiler stores machine instructions in heap memory. When executing the same command from
IL
code, re-verification and compilation are not performed.
Step 2
Processor commands are executed.
Learn more about running
CLR
in the
C#
app...
← Previous topic
Как определить #define для всех файлов (для всего проекта) в С# ?
Next topic →
Как подключить C# сборку в проект?
Your feedback ... Comments ...
Your Name
Your comment
(www links can only be added by a logged-in user)
+ Picture
Объявления
Объявления
•
Download and install Microsoft Visual Studio
•
Скачать и установить Visual Studio 2026 (для изучения C#, написание программ): WPF, ASP.NET, ASP.NET Core, UWP, Maui, Xamarin, Unity, MonoGame)
•
Скачать и установить Visual Studio 2022 (для изучения C#, написание программ): WPF, ASP.NET, ASP.NET Core, UWP, Maui, Xamarin, Unity, MonoGame)
•
Скачать и установить Visual Studio 2019 (для изучения C#, написание программ: WPF, ASP.NET, ASP.NET Core, Xamarin, Unity, MonoGame)
•
Download and install Visual Studio 2017 (для изучения C#, написание программ: WPF, ASP.NET, ASP.NET Core, Xamarin, Unity, MonoGame)
Новое приложение для изучения C#
•
Создаем новое консольное приложение для изучения C#
Отладка кода
•
Debug.Assert(false) Отладка кода в C#
•
Для отладки, опция "Common Language Runtime Exceptions" увидеть исключения, когда выполняется программа C#
•
Атрибут [Obsolete("Мой метод устарел. Не используйте", false)] Warning when compiling code in the C#
Типы данных C#
•
C# типы данных: число (bool, char, byte, int, long, float, double, decimal), текст (string), перечисление (enum), класс (class), структура (struct)
•
Структура Boolean in the C# это флаг со значениями true или false (bool) и методы для конвертации bool
•
Структура Int32 in the C# это целое число со знаком (int) и методы для конвертации int
•
Структура Single in the C# это число с плавающей запятой (float) и методы для конвертации float
•
var ... Переменная любого типа in the C#. Пример: var str = "Hello!";
•
Тип dynamic in the C#
•
Значения по умолчанию in the C#
Хранение объектов в памяти. Удаление объектов из памяти
•
Ссылочные типы и типы значений in the C#
•
Стэк (stack) - память для параметров метода и локальных переменных in the C#
•
Heap - динамическая память доступная во время выполнения программы in the C#
•
Интерфейс IDisposable. Пишем код для правильного освобождения неуправляемых ресурсов в деструкторе и в интерфейсе IDisposable in the C#
•
Память. Сборщик мусора (garbage collector). Автоматическое освобождение памяти in the C#
C# конвертация типов
•
C# конвертация строки в число (string → short, int, long, ushort, uint, ulong, float, double, decimal) | используем Culture (настройки системы)
•
C# конвертация числа в строку (int, double, short, ... → string) with the required accuracy
Текст в C# (тип string и класс String)
•
Алгоритм пересечения прямоугольников
•
Что такое текст in the C# ? Тип string и класс String. Методы для работы с текстом.
•
Length (длина строки в C#). Пример: string str1 = "Hello"; int v1 = str1.Length;
•
CompareTo (сравнивает текст с учетом регистра в C#). Пример: bool bIsSame = str1.CompareTo(str2)==0;
•
ToLower (конвертирует текст в нижний регистр в C#). Пример: string str1 = "HELLO World!"; string str2 = str1.ToLower();
•
ToUpper (конвертирует текст в верхний регистр в C#). Пример: string str1 = "Hello World!"; string str2 = str1.ToUpper();
•
Split (разбить строку на слова в C#). Пример: string[] arrWords = strText.Split(' ');
•
StartsWith (проверяет начало текста с указанным текстом с учетом регистра в C#). Пример: bool bStart = str1.StartsWith(str2);
•
Contains (проверяет содержит текст указанный текст или нет с учетом регистра в C#). Пример: bool bFound = str1.Contains(str2);
•
IndexOf (ищет строку с учетом регистра и возвращает позицию в C#). Пример: int pos = str1.IndexOf(str2);
•
Substring (возвращает часть текста с указанной позиции и длиной in the C#). Пример: string str1 = "Hello World!"; string str2 = str1.Substring(2, 5);
•
IsNullOrEmpty (проверяет текст на пустой или на null in the C#). Пример: string name = "Hello World!"; bool bFlag = String.IsNullOrEmpty(name);
•
IsNullOrWhiteSpace (проверяет текст на null или на текст с пробелами in the C#). Пример: string name = " "; bool bFlag = String.IsNullOrWhiteSpace(name);
•
[] (возвращает символ с указанной позиции in the C#). Пример: char symbol = str[1];
•
Format (форматирование текста, строки in the C#). Пример: string strNew = String.Format("Hello {0}, {1}", name, year);
•
+ (добавление строк и текста in the C#). Пример: string str = str1 + str2 + " people!";
•
$ (интерполяция строк in the C#). Пример: string result = $"Hello {a} + {b} = {a + b}";
•
Символ @ перед началом строки in the C#. Пример: string str1 = @"aaa";
•
Используем вместе @ и $ (интерполяцию строк в C#)
DateTime (дата и время) в C#
•
Что такое DateTime в C# ? Конвертация в строку с форматом
Перечисления в C# (enum)
•
Что такое перечисление (enum) in the C# ?
•
Как преобразовать текст в enum in C#
•
How to enumerate all elements in enum in C#
null
•
null значение для простых типов. Используем ? или Nullable in the C#
•
Оператор ?? (null-объединение) in the C#
try-catch
•
Обработка исключений в C#. Оператор try catch finally
Классы в C# (class)
•
Что такое класс in the C#?
•
Модификаторы доступа класса in the C#. Модификаторы доступа для методов, свойств, полей in the C#
•
'partial class' in the C#. Описание класса в разных файлах
[bgcolor=#F5F9DB]Конструкторы для класса[/bgcolor]
•
Конструктор класса in the C#
•
Инициализация объекта класса (установка значений для полей) in the C#
•
Вызов конструктора у базового класса in the C#
•
Статический конструктор в классе C#
•
'base' Для вызова метода из базового класса. Для вызова переменной из базового класса. Для вызова конструктора из базового класса. C#
•
'this' Для установки или получения значения у поля класса. Для вызова конструктора из класса. C#
[bgcolor=#F5F9DB]Деструкторы для класса[/bgcolor]
•
Деструктор класса in the C#
•
Деструкторы в классах (как вызываются базовые деструкторы) C#
[bgcolor=#F5F9DB]Наследование[/bgcolor]
•
Что такое наследование класса в C# ?
[bgcolor=#F5F9DB]Наследование с использованием new[/bgcolor]
•
Используем new для метода интерфейса. Наследование интерфейса от интерфейса с одинаковым методом
•
Используем new для метода класса. Наследование класса от класса в C#.
[bgcolor=#F5F9DB]Наследование с использованием sealed[/bgcolor]
•
sealed class. Запрет наследоваться in the C#
•
Наследование класса от класса в C#. Используем слова virtual, override, sealed для методов класса
[bgcolor=#F5F9DB]Абстрактный класс[/bgcolor]
•
Что такое абстрактный класс in the C# ? Абстрактные методы, свойства, индексы.
•
Наследование от класса abstract in the C#. Используем abstract и override для методов класса
[bgcolor=#F5F9DB]Константы и readonly [E_M_P_T_Y] поля в классе[/bgcolor]
•
Константы в классе C#
•
readonly . Для поля класса. Это поле только для чтения в C#
[bgcolor=#F5F9DB]Свойства get и set в классе C# (аксессоры)[/bgcolor]
•
get set Свойства в классе C#
•
Наследование (virtual, override) для аксессоров get и set в C#
[bgcolor=#F5F9DB]Операторы, индексаторы в C#[/bgcolor]
•
Операторы в классе C#. Перегрузка операторов: > < ++ + true false
•
Индексаторы в классе C#
[bgcolor=#F5F9DB]Вложенные типы в C#[/bgcolor]
•
Вложенный класс, структура в C#
[bgcolor=#F5F9DB]Параметры в методе класса C#[/bgcolor]
•
ref и out (возврат параметров по ссылке в методе) C#. Пример: public void AddValue(ref int value)
•
Параметры по умолчанию (необязательные параметры) в методе C#. Пример: public int CalculateSum(int a, int b, int c=7)
•
Именованные параметры C#. Пример: public void CalculateSum(a:7, b:3);
[bgcolor=#F5F9DB]Универсальные методы, универсальные классы в C# (шаблоны)[/bgcolor]
•
Метод с универсальными параметрами в C# (шаблоны). Пример: public double Sum<T1, T2>(T1 value1, T2 value2) { ... }
•
Обобщенный (типизированный) класс в C# (шаблоны). Пример class Book<T> { ... }
•
where Ограничение типа в обобщенном (типизированном) классе в C# (шаблоны). Пример class Dog<T> where T : Cat
[bgcolor=#F5F9DB]Преобразование объекта класса из одного типа в другой[/bgcolor]
•
explicit это явный оператор преобразования в классе C#
•
implicit это неявный оператор преобразования в классе C#
•
Преобразование объекта класса из одного типа в другой в C#. Используем try ( ) is as
•
Преобразование объекта класса из одного типа в другой в C#. Используем pattern matching is switch
[bgcolor=#F5F9DB]Объект класса в C#[/bgcolor]
•
? оператор условного null в C#
•
Объект класса содержит ссылку в C#
•
Как чтобы при копировании объектов в C# копировались данные класса, а не ссылка?
[bgcolor=#F5F9DB]Статический конструктор и статические свойства и методы[/bgcolor]
•
Статический конструктор в классе C#
•
Статические методы, свойства, члены в классе C#
[bgcolor=#F5F9DB]Дополнительные возможности класса в C#[/bgcolor]
•
Метод расширения в C# (this в первом параметре метода). Пример: static public void AddValues(this List<int> myList, int value1, int value2)
[bgcolor=#F5F9DB]Правила именования классов в C#[/bgcolor]
•
Какими буквами строчными или заглавными называть классы, методы, свойства ... в C#
•
Правильно ли для каждого класса в C# создавать свой .cs файл? Или писать классы C# в одном .cs файле?
Статический класс
•
Статический класс в C#
Анонимный класс
•
Объект с анонимным (отсутствующим) типом в C#. Пример: var book = new { BookName = "Властелин Колец", Price = 100 };
Интерфейсы
•
Что такое interface в C# ?
•
Наследование interface от interface в C#
•
Наследование класса от класса от interface в C#. Используем override и virtual для методов класса
•
Обобщенный (типизированный) интерфейс в C# (шаблоны). Пример interface IUser<T> { ... }
Структура struct
•
Что такое структура в C#?
•
Модификаторы доступа структуры в C#. Модификаторы доступа для методов, свойств, полей структуры в C#
•
Инициализация объекта структуры (установка значений для полей) в C#
•
Как поменять значение в массиве структур или в коллекции структур (List) в C#
•
Вложенная структура в C#
[bgcolor=#F5F9DB]Преобразование объекта структуры из одного типа в другой[/bgcolor]
•
implicit это неявный оператор преобразования структуры в C#
•
explicit это явный оператор преобразования структуры в C#
Отложенная загрузка class Lazy в C#
•
Отложенное создание объекта в памяти (class Lazy в C#)
Кортежи (tuple)
•
Кортежи (tuple) в C#
Динамические объекты с любыми свойствами
•
DynamicObject и ExpandoObject в C#
Массивы
•
Что такое массивы? array в C#
•
Инициализация массива (заполнение элементов массива array) в C#
•
params передача любого количества параметров в метод в C#
•
Класс Array (для работы с массивом) C#
Коллекции
•
Что такое коллекции в C# ?
•
Что такое необобщенные коллекции в C# ? Классы ArrayList, Stack, Queue, Hashtable, SortedList, BitArray
•
Что такое обобщенные (типизированные) коллекции в C# ? Классы List<T>, SortedList<T>, Stack<T>, Dictionary<TKey,TValue>, LinkedList<T>, Queue<T>, HashSet<T>, SortedSet<T>, ConcurrentDictionary<TKey, TValue>, SortedDictionary<TKey, TValue>
Классы необобщенных коллекций (в одной коллекции хранятся элементы разного типа)
•
Интерфейс IEnumerable. Самый базовый интерфейс для коллекций в C#
•
Интерфейсы: ICollection, IList, IDictionary. Основа для коллекций в C#
Класс ArrayList (коллекция в C#)
•
Что такое ArrayList в C# ?
Класс SortedList (коллекция в C#)
•
Что такое SortedList в C# ?
Класс Stack (коллекция в C#)
•
Что такое Stack в C# ?
Класс Queue (коллекция в C#)
•
Что такое Queue в C# ?
Класс Hashtable (коллекция в C#)
•
Что такое Hashtable в C# ?
Класс BitArray (коллекция в C#)
•
Что такое BitArray в C# ?
Классы обобщенных, типизированных коллекций в C# (в одной коллекции хранятся элементы одного типа)
•
Интерфейс IEnumerable<T>. Самый базовый интерфейс для типизированных коллекций в C#
•
Интерфейсы: ICollection<T>, IList<T>, ISet<T>, IDictionary<TKey, TValue>. Основа для типизированных коллекций в C#
Класс List<T> (типизированная коллекция в C#)
•
Что такое List<T> в C# ?
•
Инициализация коллекции List в фигурных скобках in the C#
•
for, foreach (проходим все элементы в List<T>) в C#
•
Find (ищем элемент по критерию в List<T>) в C#
•
FindAll (ищем список элементов по критерию в List<T>) в C#
•
ForEach (для каждого элемента List<T> выполняется действие) в C#
Класс LinkedList<T> (типизированная коллекция в C#)
•
Что такое LinkedList<T> в C# ?
Класс SortedList<TKey, TValue> (типизированная коллекция в C#)
•
Что такое SortedList<TKey, TValue> в C# ?
Класс Stack<T> (типизированная коллекция в C#)
•
Что такое Stack<T> в C# ?
Класс Queue<T> (типизированная коллекция в C#)
•
Что такое Queue<T> в C# ?
Класс HashSet<T> (типизированная коллекция в C#)
•
Что такое HashSet<T> в C# ?
•
Как устроен HashSet<T> в C#
Класс SortedSet<T> (типизированная коллекция в C#)
•
Что такое SortedSet<T> в C# ?
Класс ObservableCollection<T> (типизированная коллекция в C#)
•
Что такое ObservableCollection<T> в C# ?
Класс Dictionary<TKey, TValue> (типизированная коллекция в C#)
•
Что такое Dictionary<TKey, TValue> в C# ?
•
Инициализация элементов в конструкторе Dictionary<TKey, TValue> в C#
•
Как устроен Dictionary<TKey, TValue> в C#
•
Как в C# сконвертировать IEnumerable в → Dictionary<TKey, TValue> . Используем метод ToDictionary
Класс SortedDictionary<TKey, TValue> (типизированная коллекция в C#)
•
Что такое SortedDictionary<TKey, TValue> в C# ?
Класс ConcurrentDictionary<TKey, TValue> (типизированная коллекция в C#)
•
Что такое ConcurrentDictionary<TKey, TValue> в C# ?
•
AddOrUpdate (добавить или обновить значение по ключу в ConcurrentDictionary<TKey, TValue>) в C#
Асимптотическая сложность для добавления, удаления, взятия элемента в коллекциях
•
Асимптотическая сложность для добавления, удаления, взятия элемента в коллекциях C# (List, SortedList, Stack, Dictionary, LinkedList, Queue, HashSet, SortedSet, ConcurrentDictionary, SortedDictionary)
Сортировка элементов в массиве [] и коллекции List
•
Сортировка элементов в массиве [] и коллекции List<T> в C#. Интерфейс IComparable
•
Сортировка элементов в массиве [] и коллекции List<T> в C#. Интерфейс IComparer
Моя реализация IEnumerator, IEnumerable и итераторы
•
Пример: Моя реализация интерфейсов IEnumerable и IEnumerator в C#
•
Итераторы и yield в C#. Примеры реализации IEnumerable с помощью yield
Методы расширения для IEnumerable
(поиск, замена, выборка значений) в C#
•
Методы поиска, замены, выборки значений в IEnumerable<T>. Методы расширений для IEnumerable<T> в C#
•
Any (метод расширения IEnumerable<T>) в C#
•
Select (метод расширения IEnumerable<T>) в C#
•
GroupBy (метод расширения IEnumerable<T>) in the C#
•
GroupJoin (метод расширения IEnumerable<T>) in the C#
Сортировка, фильтрация в LINQ (Language-Integrated Query)
•
Что такое LINQ в C# ?
•
Сортировка, фильтрация элементов списка с помощью LINQ в C#
•
Книги для изучения LINQ в C#
Указатели
•
Указатели в C#. Оператор unsafe
•
Указатели на структуры, поля классов, массивы в C# . Операторы unsafe, stackalloc, fixed
Работа с файлами
•
Открываем файл, читаем текст из файла и разбиваем по словам. C#
•
Создаем текстовый файл, пишем текст в файл C#
•
Создаем HTML файл, пишем табличные данные в HTML файл | C#
•
Создаем бинарный файл, пишем байты в файл C#
•
Частичная загрузка файла с FTP в C#
•
Класс Path. Метод Combine - объединяет строки в полный путь файла. И другие методы класса Path | C#
Сериализация
•
Что такое сериализация объекта в C# ? Атрибут [Serializable]
•
Сериализация C# объекта в бинарный файл. Класс BinaryFormatter. Атрибут [Serializable]
•
Сериализация C# объекта в XML файл. Класс XmlSerializer. Атрибут [Serializable]
•
Сериализация C# объекта в JSON файл. Класс DataContractJsonSerializer. Атрибут [Serializable]
•
Сериализация C# объекта в SOAP файл. Класс SoapFormatter. Атрибут [Serializable]
Пространства имен
•
Пространства имен namespace using в C#
Delegate
•
Делегат (delegate) в C#
•
Добавление метода(методов) в делегате C#. Объединение делегатов. Удаление метода из делегата
•
Делегат как параметр в методе C#
•
Безымянный, анонимный метод в C# (метод описанный на месте параметра, делегата)
Универсальные делегаты
•
Универсальные, обобщенные делегаты в C# (шаблоны)
•
Универсальные делегаты Action, Predicate и Func в C#
События
•
События (event) в C#
Лямда
•
Лямда (пример) в C#
Регулярные выражения
Регулярные выражения в C#
•
Разбиваем текст на слова (регулярные выражения в c#)
•
Ставим * вместо фамилии после первой буквы (регулярные выражения в c#)
•
Разбиваем текст на слова (регулярные выражения в c#)
Процесс, модули процесса
•
Процесс в C# (класс Process)
•
Модули процесса в С# (класс ProcessModule)
Потоки, многопоточность
•
Потоки в C# (класс Thread)
•
Пул потоков в C# (Thread Pool)
•
В чем отличие background (фоновый поток) и foreground (на переднем плане поток) в C# ?
•
Синхронизация потоков в C#
Parallel Library Task (TPL) Параллельное программирование задач
•
Parallel Library Task (TPL). Библиотека параллельных задач в C#
•
Класс Parallel используя метод Invoke параллельно выполненяет методы, циклов for и foreach (на разных ядрах процессора) в C#
•
PLINQ распараллеливает LINQ запросы для выполнения на разных ядрах процессора в C#
Асинхронные методы (async и await)
•
class Task в C#
•
Асинхронное программирование в C# (async, await как оформлять)
•
Асинхронное программирование в C# (используем async, await и Task на примере)
•
Асинхронное программирование в C# (теория)
Домены приложений
•
Что такое Домены приложений в C# ? (класс AppDomain)
•
Пример "Информация о домене приложения" (имя текущего домена, перечисляем сборки) в C#
•
Пример "Создаем 2-ой домен приложения. Пишем класс в 1-ом домене и используем во 2-ом домене. MarshalByRefObject в C#
•
Пример "Загружаем 2-ой домен приложения из файла, запускаем вычисления, выгружаем 2-ой домен из памяти" в C#
Атрибуты
•
Атрибуты для класса, метода, свойства в C#
•
Атрибут [Conditional("AAA")] . Для компиляции игнорировать метод или свойство если не определен символ условной компиляции в C#
•
Атрибут [Obsolete("Мой метод устарел. Не используйте", false)] Warning when compiling code in the C#
•
Атрибут [Display(Name = "Sleep at night")] . Для хранения какого нибудь текста прикрепленного к переменной | C#
•
Аттрибут [Required(ErrorMessage = "Пожалуйста, введите название")] описывается для свойства в C# классе и требует чтобы свойство было заполнено, если не заполнено на экране ошибка ErrorMessage в ASP.NET MVC
•
Аттрибут [Remote("IsValidAuthor", "Home", ErrorMessage = "Enter correct author of book")] описывается для свойства в C# классе и проверяет это свойство на правильность на сервере через метод IsValidAuthor в conroller Home, если метод возвращает false, то на экране будет ошибка ErrorMessage в ASP.NET MVC
Рефлексия (отражение) reflection в C#
•
Оператор nameof в C# (имя класса, имя метода, имя переменной)
•
Что такое рефлексия (отражение) в C# ? Класс Type
•
Создание объекта класса и вызов конструтора с параметрами используя рефлексию (отражение) reflection в C#
•
Как получить информацию атрибута для метода у класса. Используем reflection (отражение) | C#
•
Как получить информацию атрибута для свойства у класса. Используем reflection (отражение) | C#
•
Как поменять свойство (set) в классе если private используя reflection (отражение) | C#
Директивы препроцессора (if при компиляции)
•
Директивы препроцессора #define #undef #if #elif #else #endif в C#
•
Как определить #define для всех файлов (для всего проекта) в С# ?
Что такое сборка и исполняющая среда CLR ?
•
Сборка (Assembly) в C#. Компиляция. Промежуточный код IL (Intermediate Language). Метаданные.
•
Как подключить C# сборку в проект?
•
Утилита ildasm.exe. Конвертирует сборку (C# exe, dll файл) в промежуточный язык IL (Intermediate Language). Эта утилита удобна для изучения
•
Исполняющая среда CLR (Common Language Runtime) в C# . JIT (Just-In-Time) компилятор.
Создание и подключение нашей сборки
•
Создание нашей C# сборки (обычная сборка)
•
Подключение нашей C# сборки (обычная сборка)
▷
•
Создание нашей C# сборки (разделяемая сборка)
•
Подключение нашей C# сборки (разделяемая сборка)
База данных в консольном приложении C#
•
Entity Framework в консольном приложении C#. Используем Code First (пишем c# код, а таблицы в базе данных создаются сами)
•
Читаем картинку из базы данных и сохраняем в файл | ADO.NET, C#, консольное приложение
Внедрение зависимостей (Dependency Injection) DI в C#
•
Внедрение зависимостей в C# | Dependency Injection (DI)
•
Ninject (IoC-контейнер) управление зависимостями в C#
•
Autofac (IoC-контейнер) управление зависимостями в C#
Удобные утилиты Visual Studio
•
Графическая диаграмма классов в C# (View Class Diagram)
exe to C# code
•
"dotPeek" application for decompile (disassemble) exe to c# source code
В приложении C# вызываем C++ функции
•
Что такое управляемый код (managed code) и неуправляемый код (unmanaged code) ? | C# и C++
•
Маршалинг (marshalling) в C#. Преобразование типов между управляемым кодом (managed code) и неуправляемым кодом (unmanaged code)
•
В приложении C# вызываем функции из Windows dll (C++ WinAPI). Атрибут [DllImport("user32.dll")]
•
В приложении C# вызываем функции из моей dll (C++). Атрибут [DllImport("My.dll", CallingConvention = CallingConvention.Cdecl)]
Дополнительные темы, вопросы
•
Не создается новый проект в Visual Studio 2019. Ошибка "Object reference not set to instance of an object"
•
Ошибка компиляции C#: error CS1106: Extension method must be defined in a non-generic static class
•
Ошибка компиляции C#: error CS0246: The type or namespace name 'Point' could not be found (are you missing a using directive or an assembly reference?)
•
Почему метод Dictionary.TryGetValue не может найти значение по ключу в C# ?
•
Объектно-ориентированное программирование (ООП). Принципы ООП: абстрагирование, инкапсуляция, наследование, полиморфизм
•
Какими буквами в C# (заглавными или строчными или прописными) называть поля, методы в классе, интерфейсы, делегаты, параметры ?
•
Правильно ли для каждого класса в C# создавать свой .cs файл? Или писать классы C# в одном .cs файле?
•
Что лучше использовать встроенный тип int или класс Integer (тип string или класс String) на C#?
•
Как скачать и установить нужную .NET Framework версию в Visual Studio ?
•
Упаковка и распаковка значимых типов в C# (boxing/unboxing)
•
Error CS8107 Feature 'default literal' is not available in C# 7.0. Please use language version 7.1 or greater
•
Error "unable to connect to web server "iis express" | C# | Visual Studio 2017
•
Удаляем и устанавливаем NuGet в Visual Studio
•
При открытии проекта в Visual Studio 2019 ошибка: "project requires 'SQL Server 2012 Express LocalDB' which is not installed on this computer"
Математические операторы checked и unchecked
•
Математический оператор unchecked в C#
•
Математический оператор checked в C#
Дополнительный C# классы
•
C# класс Random
•
C# структура Point
•
C# структура PointF
•
C# структура Size
•
C# структура SizeF
•
C# структура Rectangle
•
C# структура RectangleF
Время
•
Время, истекшее с момента загрузки системы (в миллисекундах). System.Environment.TickCount в C#
Шифрование
•
Зашифруем пароль и проверим | C# console application
Excell
•
Чтение excel файла на C# (console application)
WWW сайты для изучения C#
•
Сайты для изучения C#
Ваши вопросы присылайте по почте:
info@dir.by