解释代表概念!
委托是定义方法签名的类型,并且可以保存对具有该签名的一个或多个方法的引用。
它们通常被描述或称为类型安全函数指针,因为它们允许将方法作为参数传递、分配给变量或动态调用,同时确保类型安全。🔒
代表们的重点是什么🗝️?
那么委托的语法是什么?!
// 1. Declare a Delegate..
public delegate void MyDelegate(string message);
// 2. Create a method matching the Delegate's signature
public class Program {
public static void DisplayMessage(string message) {
Console.WriteLine(message);
}
public static void Main() {
// 3. Instantiate the delegate
MyDelegate del = DisplayMessage;
// 4. Invoke the delegate
del("Hellow, World!");
}
}让我们来谈谈常见的用途!
有 3 种常见用途:
让我们逐一解释一下
1- 事件处理:委托是 C# 中事件的基础,它们允许使用方法订阅和取消订阅事件。
public delegate void Notify();
public class EventExample {
public event Notify OnNotify;
public void TriggerEvent() {
OnNotify?.Invoke(); // Safely invoke the delegates if it has subscribers
}
}2-回调机制:将一个方法传递给另一个方法以便稍后执行。
public class Calculator {
public void PerformOperation(int x, int y, Action callback) {
int result = x + y;
callback(result);
}
}
public class Program {
public static void Main() {
Calculator calc = new ();
calc.PerformOperation(2, 3, Console.WriteLine); // Pass Console.WriteLine as a Delegate
}
} 3- LINQ 和函数式编程:LINQ 中大量使用 Func、Action、Predicate 等委托来定义自定义逻辑。
什么是内置代表?
Actionprint = Console.WriteLine; print("Hello, World!");
Funcadd (x,y) => x + y; Console.WriteLine(add(3,4));
PredicateIsEven = x => x % 2 == 0; Console.WriteLIne(IsEven(4));
代表的优势
现在就这样了!继续编码,保持优秀。稍后见,书呆子们!