问题描述
我想知道使用委托方法和使用通用方法[无委托]之间的区别.
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
这篇关于委托方法与一般方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!