c# 怎么什么情况下使用委托比较合理示例
委托在以下情况下比较合理:
-
事件处理:使用委托可以将事件处理程序与事件分离,从而使代码更易于维护和扩展。
-
异步编程:使用委托可以在异步编程中传递回调函数,以便在异步操作完成后执行。
-
泛型编程:使用委托可以将函数作为参数传递给泛型方法,从而使方法更加灵活和通用。
示例:
- 事件处理:
public class Button
{
public delegate void ClickEventHandler(object sender, EventArgs e);
public event ClickEventHandler Click;
public void OnClick()
{
if (Click != null)
Click(this, EventArgs.Empty);
}
}
public class Form
{
private Button button;
public Form()
{
button = new Button();
button.Click += Button_Click;
}
private void Button_Click(object sender, EventArgs e)
{
// 处理按钮点击事件
}
}
- 异步编程:
public class Worker
{
public delegate void CallbackDelegate(string result);
public void DoWork(CallbackDelegate callback)
{
// 异步操作
string result = "操作结果";
callback(result);
}
}
public class Client
{
private Worker worker;
public Client()
{
worker = new Worker();
}
public void Start()
{
worker.DoWork(OnWorkComplete);
}
private void OnWorkComplete(string result)
{
// 处理异步操作完成后的回调
}
}
- 泛型编程:
public class Calculator
{
public delegate T CalculateDelegate<T>(T a, T b);
public T Add<T>(T a, T b)
{
return Calculate<T>(a, b, (x, y) => x + y);
}
public T Subtract<T>(T a, T b)
{
return Calculate<T>(a, b, (x, y) => x - y);
}
private T Calculate<T>(T a, T b, CalculateDelegate<T> calculate)
{
return calculate(a, b);
}
}
public class Client
{
private Calculator calculator;
public Client()
{
calculator = new Calculator();
}
public void Start()
{
int a = 10;
int b = 5;
int result = calculator.Add<int>(a, b);
}
}
``
原文地址: https://www.cveoy.top/t/topic/faCo 著作权归作者所有。请勿转载和采集!