Delegate Methods vs General Methods(委托方法与一般方法)
问题描述
我想知道使用委托方法和使用通用方法[无委托]之间的区别.
I want to know the difference between using Delegate Methods and using General Methods[without Delegates].
与代表:
delegate void DelMethod(string str);
static void Method(string str)
{
Debug.WriteLine(str);
}
用法:
DelMethod dm = new DelMethod(Method);
dm(string);
并且没有委托:
static void Method(string str)
{
Debug.WriteLine(str);
}
用法:
Method(string)
这两者有什么区别??
What are the differences of these two??
没有委托的方法更小更容易.但我发现程序员经常使用委托方法.
The method without delegate is smaller and easy. But I find coders using delegated Methods frequently.
这背后的原因是什么??
What is the reason behind this??
推荐答案
代表是另一种情况.想象一下,你有一个班级应该回答另一个班级的问题,但你对第二个班级一无所知.在这种情况下,您可以先做一个委托.
Delegates are for another situation. Imagine, that you have a class which should answer for something from another class, but you know nothing about the second class. In such situation you can do a Delegate in the first.
// class where you know something
class A
{
//delegate for answer
public Func<bool> AskForSomething { get; set; }
public void DoSomething()
{
//some code
if(AskForSomething())
{
//do something
}
else
{
//do something else
}
}
}
class B
{
public void Test()
{
A a = new A();
a.AskForSomething = new Func<bool>(Answer);
a.DoSomething();
}
private bool Answer()
{
return true;
}
}
Class A对class B一无所知,但它可以调用B的方法并得到它的结果.class B中的Answer方法是private,class A不能直接调用.
Class A knows nothing about class B, but it can call B's methods and get it's results. The Answer method in class B is private and class A can't call it directly.
在 MSDN
这篇关于委托方法与一般方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:委托方法与一般方法
基础教程推荐
- 如果条件可以为空 2022-01-01
- 获取C#保存对话框的文件路径 2022-01-01
- SonarQube C# 分析失败“不是指针的有效行偏移" 2022-01-01
- 将数据集转换为列表 2022-01-01
- 在 VB6 或经典 ASP 中使用 .NET 2022-01-01
- Mono https webrequest 失败并显示“身份验证或解密失败" 2022-01-01
- C# 9 新特性——record的相关总结 2023-04-03
- 从 C# 控制相机设备 2022-01-01
- 更新 Visual Studio 中的 DataSet 结构以匹配新的 SQL 数据库结构 2022-01-01
- 重新排序 WPF TabControl 中的选项卡 2022-01-01
