The c delegate treats the method as an instance of the parameter of
- 2020-06-07 05:12:11
- OfStack
Static method proxy:
public delegate void DoGreeting(string name);
class Program
{
[STAThread]
static void Main(string[] args)
{
// The method name is called as an argument to the delegate type
MarkGreeting(" zhang 3", GreetingEnglish);
MarkGreeting(" li 4", GreetingChinese);
}
/// <summary>
/// entrust ( Method of proxy )
/// </summary>
/// <param name="name"></param>
/// <param name="markGreeting"></param>
private static void MarkGreeting(string name, DoGreeting markGreeting)
{
markGreeting(name);
}
/// <summary>
/// Greet in English
/// </summary>
/// <param name="name"></param>
private static void GreetingEnglish(string name)
{
Console.WriteLine(name+"hello!");
}
/// <summary>
/// Greet in Chinese
/// </summary>
/// <param name="name"></param>
private static void GreetingChinese(string name)
{
Console.WriteLine(name+" hello !");
}
}
Instance method proxy:
public delegate void DoGreeting(string name);
public class Greeting
{
/// <summary>
/// entrust ( Method of proxy )
/// </summary>
/// <param name="name"></param>
/// <param name="markGreeting"></param>
public void MarkGreeting(string name, DoGreeting markGreeting)
{
markGreeting(name);
}
/// <summary>
/// Greet in English
/// </summary>
/// <param name="name"></param>
public void GreetingEnglish(string name)
{
Console.WriteLine(name + "hello!");
}
/// <summary>
/// Greet in Chinese
/// </summary>
/// <param name="name"></param>
public void GreetingChinese(string name)
{
Console.WriteLine(name + " hello !");
}
}
class Program
{
[STAThread]
static void Main(string[] args)
{
Greeting greetingObj = new Greeting();
greetingObj.MarkGreeting(" zhang 3", greetingObj.GreetingEnglish);
greetingObj.MarkGreeting(" li 4", greetingObj.GreetingChinese);
}