C# 10.12.2023
This commit is contained in:
		
							
								
								
									
										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