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);
|
||||
};
|
||||
Func b = (a) => Console.WriteLine(a);
|
||||
Func d = (string a) => Console.WriteLine(a); // Тип указывать не обязательно, если не использовать var
|
||||
Func e = a => Console.WriteLine("FooBar"); // Если 1 параметр, то скобки не нужны
|
||||
Func c = delegate { // Мы аргументы не используем, поэтому скобки можно не писать
|
||||
Console.WriteLine(foo); // Можно ссылаться на локальные переменные
|
||||
};
|
||||
@ -1010,3 +1012,46 @@ var a = (string a, string b) => Console.WriteLine(a+b); // Неявная тип
|
||||
|
||||
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