C# 10.12.2023
This commit is contained in:
parent
839fd99136
commit
d8cea5d3ef
45
C#/C#.md
45
C#/C#.md
@ -1003,6 +1003,8 @@ Func a = delegate(string a) {
|
|||||||
Console.WriteLine(a);
|
Console.WriteLine(a);
|
||||||
};
|
};
|
||||||
Func b = (a) => Console.WriteLine(a);
|
Func b = (a) => Console.WriteLine(a);
|
||||||
|
Func d = (string a) => Console.WriteLine(a); // Тип указывать не обязательно, если не использовать var
|
||||||
|
Func e = a => Console.WriteLine("FooBar"); // Если 1 параметр, то скобки не нужны
|
||||||
Func c = delegate { // Мы аргументы не используем, поэтому скобки можно не писать
|
Func c = delegate { // Мы аргументы не используем, поэтому скобки можно не писать
|
||||||
Console.WriteLine(foo); // Можно ссылаться на локальные переменные
|
Console.WriteLine(foo); // Можно ссылаться на локальные переменные
|
||||||
};
|
};
|
||||||
@ -1010,3 +1012,46 @@ var a = (string a, string b) => Console.WriteLine(a+b); // Неявная тип
|
|||||||
|
|
||||||
delegate void Func(string a);
|
delegate void Func(string a);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Лямбды могут возвращать значения и их можно складывать и вычитать
|
||||||
|
|
||||||
|
```C#
|
||||||
|
Operation sum = (a, b) => a + b;
|
||||||
|
Operation product = (a, b) => a * b;
|
||||||
|
Operation op = sum;
|
||||||
|
op += product;
|
||||||
|
op -= sum;
|
||||||
|
|
||||||
|
delegate int Operation(int a, int b);
|
||||||
|
```
|
||||||
|
|
||||||
|
## *event*
|
||||||
|
|
||||||
|
```C#
|
||||||
|
Account a = new(50);
|
||||||
|
a.Notify += Console.WriteLine;
|
||||||
|
|
||||||
|
delegate void AccountHandler(string message);
|
||||||
|
|
||||||
|
class Account(int sum)
|
||||||
|
{
|
||||||
|
|
||||||
|
public event AccountHandler? Notify;
|
||||||
|
private int sum = sum;
|
||||||
|
|
||||||
|
void Put(int amount) => sum += amount;
|
||||||
|
|
||||||
|
void Take(int amount)
|
||||||
|
{
|
||||||
|
if (sum < amount)
|
||||||
|
{
|
||||||
|
Notify?.Invoke("Денег мала");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sum -= amount;
|
||||||
|
Notify?.Invoke($"Снято {amount}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Reference in New Issue
Block a user