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";
```
### Switch
### *Switch*
```C#
int number = 1;
@ -185,10 +185,10 @@ switch (number) {
Всё как в С++
* while
* do-while
* for
* foreach
* *while*
* *do-while*
* *for*
* *foreach*
## Массивы
@ -235,7 +235,7 @@ words.Add("Bar");
words.RemoveAt(1);
```
## Random
## *Random*
```C#
Random r = new Random();
@ -324,7 +324,7 @@ int b = 6;
Sum(a, b);
```
#### params
#### *params*
*params* позволяет передать не определённое кол-во параметров. После него не может быть больше параметров
@ -383,7 +383,7 @@ int Sum2Arr(int[] arr1, int[] arr2) {
}
```
## Enum
## *Enum*
Enum используется для хранения состояния
@ -918,7 +918,7 @@ catch (DivideByZeroException ex)
}
```
### Класс Exception
### Класс *Exception*
> Класс *Exception* - базовый класс всех ошибок
@ -930,7 +930,7 @@ catch (DivideByZeroException ex)
* StackTrace
* TargetSote - метод, в котором случилось исключение
### Throw
### *Throw*
```C#
try {
@ -939,3 +939,58 @@ try {
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);
```