什么时候会用到把函数作为参数传递

时间:2022-09-16 16:00:56
什么时候会用到把函数作为参数传递
用委托做代理

有例子 或 说出什么时候用到的直接给分

7 个解决方案

#1


不确定什么时间,什么地点调用函数的时候,比如某个时间触发某个事件,事件绑定委托,委托调用函数,或者再使用多线程的时候。。。

#2


该回复于2011-12-27 11:00:40被版主删除

#3


一般是调用某个方法,但某些操作不便于在该方法内处理,就用个委托,交给另一个方法处理,处理后返回结果给原方法处理。

#4


当使用事件设计模式时。

当封装静态方法可取时。

当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。

需要方便的组合。

当类可能需要该方法的多个实现时。

在以下情况下,请使用接口:

当存在一组可能被调用的相关方法时。

当类只需要方法的单个实现时。

当使用接口的类想要将该接口强制转换为其他接口或类类型时。

当正在实现的方法链接到类的类型或标识时:例如比较方法。

#5


比如,将字符串"第1次世界大战中国有2500万人死亡,占世界死亡总数的40%。"中的数字部分翻倍,可以这样写:
	protected void Page_Load(object sender, EventArgs e)
{
string s = "第1次世界大战中国有2500万人死亡,占世界死亡总数的40%。";
MatchEvaluator me = new MatchEvaluator(A);
string r = Regex.Replace(s, @"\d+", me);
Response.Write(r);
}
private string A(Match match)
{
return (int.Parse(match.Value) * 2).ToString();
}

Regex.Replace方法内需要将每一个匹配项替换成它的2倍,但翻倍不能在Replace方法内实现,所以用个正则委托me,把每个匹配项交给委托me,me再将其传给方法A,进行翻倍后返回给委托me,me再交给Replace方法,做为替换的结果。

#6


引用 5 楼 dalmeeme 的回复:
比如,将字符串"第1次世界大战中国有2500万人死亡,占世界死亡总数的40%。"中的数字部分翻倍,可以这样写:
C# code
    protected void Page_Load(object sender, EventArgs e)
    {
        string s = "第1次世界大战中国有2500万人死亡,占世界死亡总数的40%。";
        MatchEva……



没看懂

#7


这是个很简单的委托了。me就是个代理人,Replace方法把正则匹配的每个结果,替换成结果的2倍。“结果的2倍”这部分功能就有A方法完成,me为两者建立联系。

#1


不确定什么时间,什么地点调用函数的时候,比如某个时间触发某个事件,事件绑定委托,委托调用函数,或者再使用多线程的时候。。。

#2


该回复于2011-12-27 11:00:40被版主删除

#3


一般是调用某个方法,但某些操作不便于在该方法内处理,就用个委托,交给另一个方法处理,处理后返回结果给原方法处理。

#4


当使用事件设计模式时。

当封装静态方法可取时。

当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。

需要方便的组合。

当类可能需要该方法的多个实现时。

在以下情况下,请使用接口:

当存在一组可能被调用的相关方法时。

当类只需要方法的单个实现时。

当使用接口的类想要将该接口强制转换为其他接口或类类型时。

当正在实现的方法链接到类的类型或标识时:例如比较方法。

#5


比如,将字符串"第1次世界大战中国有2500万人死亡,占世界死亡总数的40%。"中的数字部分翻倍,可以这样写:
	protected void Page_Load(object sender, EventArgs e)
{
string s = "第1次世界大战中国有2500万人死亡,占世界死亡总数的40%。";
MatchEvaluator me = new MatchEvaluator(A);
string r = Regex.Replace(s, @"\d+", me);
Response.Write(r);
}
private string A(Match match)
{
return (int.Parse(match.Value) * 2).ToString();
}

Regex.Replace方法内需要将每一个匹配项替换成它的2倍,但翻倍不能在Replace方法内实现,所以用个正则委托me,把每个匹配项交给委托me,me再将其传给方法A,进行翻倍后返回给委托me,me再交给Replace方法,做为替换的结果。

#6


引用 5 楼 dalmeeme 的回复:
比如,将字符串"第1次世界大战中国有2500万人死亡,占世界死亡总数的40%。"中的数字部分翻倍,可以这样写:
C# code
    protected void Page_Load(object sender, EventArgs e)
    {
        string s = "第1次世界大战中国有2500万人死亡,占世界死亡总数的40%。";
        MatchEva……



没看懂

#7


这是个很简单的委托了。me就是个代理人,Replace方法把正则匹配的每个结果,替换成结果的2倍。“结果的2倍”这部分功能就有A方法完成,me为两者建立联系。