C# 26.11.2023
This commit is contained in:
parent
fe789b95e4
commit
b40362f28b
75
C#/C#.md
75
C#/C#.md
@ -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);
|
||||||
|
```
|
||||||
|
Reference in New Issue
Block a user