用委托做代理
有例子 或 说出什么时候用到的直接给分
7 个解决方案
#1
不确定什么时间,什么地点调用函数的时候,比如某个时间触发某个事件,事件绑定委托,委托调用函数,或者再使用多线程的时候。。。
#2
#3
一般是调用某个方法,但某些操作不便于在该方法内处理,就用个委托,交给另一个方法处理,处理后返回结果给原方法处理。
#4
当使用事件设计模式时。
当封装静态方法可取时。
当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。
需要方便的组合。
当类可能需要该方法的多个实现时。
在以下情况下,请使用接口:
当存在一组可能被调用的相关方法时。
当类只需要方法的单个实现时。
当使用接口的类想要将该接口强制转换为其他接口或类类型时。
当正在实现的方法链接到类的类型或标识时:例如比较方法。
当封装静态方法可取时。
当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。
需要方便的组合。
当类可能需要该方法的多个实现时。
在以下情况下,请使用接口:
当存在一组可能被调用的相关方法时。
当类只需要方法的单个实现时。
当使用接口的类想要将该接口强制转换为其他接口或类类型时。
当正在实现的方法链接到类的类型或标识时:例如比较方法。
#5
比如,将字符串"第1次世界大战中国有2500万人死亡,占世界死亡总数的40%。"中的数字部分翻倍,可以这样写:
Regex.Replace方法内需要将每一个匹配项替换成它的2倍,但翻倍不能在Replace方法内实现,所以用个正则委托me,把每个匹配项交给委托me,me再将其传给方法A,进行翻倍后返回给委托me,me再交给Replace方法,做为替换的结果。
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
没看懂
#7
这是个很简单的委托了。me就是个代理人,Replace方法把正则匹配的每个结果,替换成结果的2倍。“结果的2倍”这部分功能就有A方法完成,me为两者建立联系。
#1
不确定什么时间,什么地点调用函数的时候,比如某个时间触发某个事件,事件绑定委托,委托调用函数,或者再使用多线程的时候。。。
#2
#3
一般是调用某个方法,但某些操作不便于在该方法内处理,就用个委托,交给另一个方法处理,处理后返回结果给原方法处理。
#4
当使用事件设计模式时。
当封装静态方法可取时。
当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。
需要方便的组合。
当类可能需要该方法的多个实现时。
在以下情况下,请使用接口:
当存在一组可能被调用的相关方法时。
当类只需要方法的单个实现时。
当使用接口的类想要将该接口强制转换为其他接口或类类型时。
当正在实现的方法链接到类的类型或标识时:例如比较方法。
当封装静态方法可取时。
当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。
需要方便的组合。
当类可能需要该方法的多个实现时。
在以下情况下,请使用接口:
当存在一组可能被调用的相关方法时。
当类只需要方法的单个实现时。
当使用接口的类想要将该接口强制转换为其他接口或类类型时。
当正在实现的方法链接到类的类型或标识时:例如比较方法。
#5
比如,将字符串"第1次世界大战中国有2500万人死亡,占世界死亡总数的40%。"中的数字部分翻倍,可以这样写:
Regex.Replace方法内需要将每一个匹配项替换成它的2倍,但翻倍不能在Replace方法内实现,所以用个正则委托me,把每个匹配项交给委托me,me再将其传给方法A,进行翻倍后返回给委托me,me再交给Replace方法,做为替换的结果。
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
没看懂
#7
这是个很简单的委托了。me就是个代理人,Replace方法把正则匹配的每个结果,替换成结果的2倍。“结果的2倍”这部分功能就有A方法完成,me为两者建立联系。