C# 26.11.2023

This commit is contained in:
StNicolay 2023-11-26 08:28:18 +00:00
parent fe789b95e4
commit b40362f28b

View File

@ -160,7 +160,7 @@ int y = 5;
string z = x < y ? "Works" : "Cosmic ray"; string z = x < y ? "Works" : "Cosmic ray";
``` ```
### Switch ### *Switch*
```C# ```C#
int number = 1; int number = 1;
@ -185,10 +185,10 @@ switch (number) {
Всё как в С++ Всё как в С++
* while * *while*
* do-while * *do-while*
* for * *for*
* foreach * *foreach*
## Массивы ## Массивы
@ -235,7 +235,7 @@ words.Add("Bar");
words.RemoveAt(1); words.RemoveAt(1);
``` ```
## Random ## *Random*
```C# ```C#
Random r = new Random(); Random r = new Random();
@ -324,7 +324,7 @@ int b = 6;
Sum(a, b); Sum(a, b);
``` ```
#### params #### *params*
*params* позволяет передать не определённое кол-во параметров. После него не может быть больше параметров *params* позволяет передать не определённое кол-во параметров. После него не может быть больше параметров
@ -383,7 +383,7 @@ int Sum2Arr(int[] arr1, int[] arr2) {
} }
``` ```
## Enum ## *Enum*
Enum используется для хранения состояния Enum используется для хранения состояния
@ -918,7 +918,7 @@ catch (DivideByZeroException ex)
} }
``` ```
### Класс Exception ### Класс *Exception*
> Класс *Exception* - базовый класс всех ошибок > Класс *Exception* - базовый класс всех ошибок
@ -930,7 +930,7 @@ catch (DivideByZeroException ex)
* StackTrace * StackTrace
* TargetSote - метод, в котором случилось исключение * TargetSote - метод, в котором случилось исключение
### Throw ### *Throw*
```C# ```C#
try { try {
@ -939,3 +939,58 @@ try {
Console.WriteLine("This is fine"); Console.WriteLine("This is fine");
} }
``` ```
## Делегаты
> Делегаты - указатели на методы. Методы должны полностью соответсвовать сигнатуре делегата.
> Сигнатура - возвращаемый тип и передоваемые параметры
Используются для:
* Callbacks
* Events - в языке есть хитрый механизм на это дело
```C#
Message? mes = Hello;
mes();
mes = new Hello().Display;
mes();
mes = new Message(Hello); // Можно и так присвоить
mes += new Hello().Display;
mes(); // Вызывается и Hello, и Display
mes += Hello; // Hello теперь будет вызываться 2 раза
mes -= Hello; // Удалит последний Hello из списка вызова
if (mes == null)
{
return;
}
mes += mes; // Делегаты можно складывать
mes.Invoke(); // Тоже самое, что и просто вызвать делегат
void Hello()
{
Console.WriteLine("Hello World");
}
delegate void Message();
class Hello
{
public void Display()
{
Console.WriteLine("Hello there");
}
}
```
Если в делегате несколько методов, то вернётся последнее значение.
Делегаты могут быть параметрами методов и возвращаемым типом.
## Обобщённые делегаты
```C#
delegate T Operation<T, K>(K val);
```