C# 10.12.2023

This commit is contained in:
StNicolay 2023-12-10 12:04:12 +03:00
parent 839fd99136
commit d8cea5d3ef

View File

@ -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}");
}
}
}
```