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
这篇关于委托方法与一般方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:委托方法与一般方法


- C#MongoDB使用Builders查找派生对象 2022-09-04
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- 输入按键事件处理程序 2022-01-01
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01