我觉得我不理解代理方法的作用。所有我看到的例子都像这样做:
class DelegateClass
{
private List<string> ListString = new List<string>;
delegate void DoSomethingToStringsDelegate(string s);
public base()
{
ListString.Add("string"); ....
}
void ProcessStrings(DoSomethingToStringsDelegate dstsd)
{
foreach(string s in ListString)
dstsd(s);
}
}
class AClass
{
...
void UseDelegateMethod(...)
{
DelegateClass ds = new DelegateClass();
ds.ProcessStrings(new DoSomethingToStringsDelegate(PrintStrings);
}
void PrintStrings(string s)
{
System.out.Write(s);
}
}
我不理解为什么需要这个,因为你可以实现一个getListStrings()并遍历字符串,像代理一样做你需要做的事情。
foreach( string s in ds.ggetListStrings() )
System.out.Write(s);
私有成员的原因并不合理,因为我可以这样做:
global List<Strings> myListStrings = new List<Strings>();
ds.ProcessStrings(new DoSomethingToStringsDelegate(GetStrings);
void GetStrings(string s)
{
myListStrings.Add(s);
}
......现在我有了与getListStrings()相同的列表....
有人能解释一下吗?非常感谢!
Regex.Replace(string,string,MatchEvaluator)
,它展示了一个非常有用的委托(MatchEvaluator
)的使用方式。(你曾经试过在Java中进行类似的正则表达式替换吗?这并不好玩。) - user166390