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";
|
||||
```
|
||||
|
||||
### 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);
|
||||
```
|
||||
|
Reference in New Issue
Block a user