c#回调函数,下面是我在高手博客看到的例子,希望高手帮忙讲下回调的执行过程以及意思,多谢。 100
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceTestApp{///<sum...
using System;
using System.Collections.Generic;
using System.Text;
namespace TestApp
{
/// <summary>
/// 委托
/// </summary>
/// <param name="s1"></param>
/// <param name="s2"></param>
/// <returns></returns>
public delegate string ProcessDelegate(string s1, string s2);
class Program
{
static void Main(string[] args)
{
Test t = new Test();
string r1 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process1));
string r2 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process2));
string r3 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process3));
Console.WriteLine(r1);
Console.WriteLine(r2);
Console.WriteLine(r3);
}
}
public class Test
{
public string Process(string s1,string s2,ProcessDelegate process)
{
return process(s1, s2);
}
public string Process1(string s1, string s2)
{
return s1 + s2;
}
public string Process2(string s1, string s2)
{
return s1 + Environment.NewLine + s2;
}
public string Process3(string s1, string s2)
{
return s2 + s1;
}
}
} 展开
using System.Collections.Generic;
using System.Text;
namespace TestApp
{
/// <summary>
/// 委托
/// </summary>
/// <param name="s1"></param>
/// <param name="s2"></param>
/// <returns></returns>
public delegate string ProcessDelegate(string s1, string s2);
class Program
{
static void Main(string[] args)
{
Test t = new Test();
string r1 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process1));
string r2 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process2));
string r3 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process3));
Console.WriteLine(r1);
Console.WriteLine(r2);
Console.WriteLine(r3);
}
}
public class Test
{
public string Process(string s1,string s2,ProcessDelegate process)
{
return process(s1, s2);
}
public string Process1(string s1, string s2)
{
return s1 + s2;
}
public string Process2(string s1, string s2)
{
return s1 + Environment.NewLine + s2;
}
public string Process3(string s1, string s2)
{
return s2 + s1;
}
}
} 展开
1个回答
推荐于2018-04-28 · 知道合伙人软件行家
关注
展开全部
ProcessDelegate 这是一个委托,你可以理解为函数指针,指向的函数签名必需是符合要求的。
string (string s1, string s2);
所以你看下面 Process1,Process2这些签名 是一样的。
public string Process(string s1,string s2,ProcessDelegate process)
{
return process(s1, s2);
}
上面的方传传二个字符串,一个委托类型,最后调用委托process(s1, s2)来计算值,就看运行时传入哪个函数了。
string r1 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process1));
new ProcessDelegate(t.Process1) 指向一个函数。将此函数当参数传入(签名是一样的)
string (string s1, string s2);
所以你看下面 Process1,Process2这些签名 是一样的。
public string Process(string s1,string s2,ProcessDelegate process)
{
return process(s1, s2);
}
上面的方传传二个字符串,一个委托类型,最后调用委托process(s1, s2)来计算值,就看运行时传入哪个函数了。
string r1 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process1));
new ProcessDelegate(t.Process1) 指向一个函数。将此函数当参数传入(签名是一样的)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询