C#编程如何使用委托
1、打卡vs2015开发工具,点击上方菜单栏的文件 -- 新建 -- 项目。

2、在新建项目中选择Visual C#项目,选择控制台项目,设置项目名称,点击确定即可新建一个C#的控制台项目。

3、创建完项目后,会自动生成一些文件,包括Program.cs文件,这是程序的入口文件,文件的内容也会在左侧编辑区展示出来。


4、修改Program.cs文件内容,在命名空间下增加一个委托类声明,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CAwt
{
public delegate string ChangeString(string str);
class Program
{
static void Main(string[] args)
{
}
}
}

5、要实现的目的是使用整个委托处理字符串数组,委托可以看成是多个方法的集合,实际中想用哪个方法就是把方法名赋给委托对象就行了。为此我们先新建几个方法,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CAwt
{
public delegate string ChangeString(string str);
class Program
{
static void Main(string[] args)
{
}
static string ToUpperFun(string str)
{
return str.ToUpper();
}
static string ToLowerFun(string str)
{
return str.ToLower();
}
}
}
这里新建的两个方法,ToUpperFun方法是把传入的字符串转成大写字母再返回,
ToLowerFun是把传入的字符串转成小写字母再返回。

6、接着定义一个用到委托对象的方法,这个方法会接收一个委托对象作为参数,实际赋给委托对象的实参其实就是上一步定义的方法名,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CAwt
{
public delegate string ChangeString(string str);
class Program
{
static void Main(string[] args)
{
}
static void StringFun(string[] names, ChangeString deleg)
{
for (int i = 0; i < names.Length; i++)
{
names[i] = deleg(names[i]);
}
}
static string ToUpperFun(string str)
{
return str.ToUpper();
}
static string ToLowerFun(string str)
{
return str.ToLower();
}
}
}
StringFun方法的另一个参数是一个数组,作用是遍历整个数据的内容,对数组的每一项使用委托对象传入的方法进行处理。

7、最后就是再入口main函数中进行调用了,定义个数组,调用上一步的StringFun方法进行处理,代码如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CAwt
{
public delegate string ChangeString(string str);
class Program
{
static void Main(string[] args)
{
string[] strs = { "gglcDEdf", "gFKKKDfds", "fdsDKLnds" };
ChangeString deleg = ToUpperFun;
StringFun(strs, deleg);
foreach (string item in strs)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
static void StringFun(string[] names, ChangeString deleg)
{
for (int i = 0; i < names.Length; i++)
{
names[i] = deleg(names[i]);
}
}
static string ToUpperFun(string str)
{
return str.ToUpper();
}
static string ToLowerFun(string str)
{
return str.ToLower();
}
}
}

8、点击工具栏的启动按钮,在Windows命令行窗口,查看效果如下图,成功把字符串数组的内容都转换成大写字母了,委托的好处在于只需要简单更改一步传入的参数就可以替换成其他方法来做处理。

