delegate string ProcessDelegate(string s); static void ProcessArray(ProcessDelegate p)
{
string[] values = new string[] { "aB","Cd"};
for (int i = 0; i < values.Length; i++)
{
values[i] = p(values[i]);
}
Console.WriteLine("处理后");
foreach (string s in values)
{
Console.WriteLine(s);
}
}
编写函数,大写、小写、加引号。
进一步体会:和直接调用函数的区别:用委托就可以指向任意的函数,哪怕是之前没定义的都可以,而不使用受限于那几种。
定义委托的时候,一般是跟类平行的(并列的)。也可以定义在类里面,这就类似于内部类了。
这个例子的委托代码:
class Program
{
static void Main(string[] args)
{
string[] values = new string[] { "aB", "Cd" };
//for (int i = 0; i < values.Length; i++)
//{
// values[i] = values[i].ToLower();
//}
//for (int i = 0; i < values.Length; i++)
//{
// values[i] = values[i].ToUpper();
//}
//=============以下是委托==============
//Process(values, ToUpper);
Process(values, FKH);//不用懂for循环可以对字符串数组进行处理
Console.WriteLine(string.Join(",", values));
Console.ReadKey();
}
static void Process(string[] values,ProcessStringDelegate p)
{
for (int i = 0; i < values.Length; i++)
{
values[i] = p(values[i]);
}
}
static string FKH(string s)
{
return "[" + s + "]";
}
static string ToUpper(string s)
{
return s.ToUpper();
}
}
delegate string ProcessStringDelegate(string s);