什么是委托
委托相当于是一个类型,比如String,是对一个函数或者方法的抽象类型。相当于定义了一个函数的模板,包含返回值,当前函数包含的参数,但是不包含任何的实现。
要注意是对方法或者是函数。
示例
定义一个委托,使用关键字delegate
deletegate string GetString(string paramA);
以上函数名是GetString 参数是ParamA, 返回值是string
使用,代码1
public class DelegateTest2
{
/// <summary>
/// 定义一个委托
/// </summary>
/// <param name="paramA">参数paramA</param>
/// <returns></returns>
private delegate string GetId(string paramA);
/// <summary>
/// 得到用户ID
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public static string GetUserId(string userId)
{
return "当前用户Id" + userId;
}
public static string GetClassId(string userId)
{
return "当前班级的Id是:" + userId;
}
/// <summary>
/// new 一个委托需要指向一个方法
/// str1.tostring 是一个String的一个方法名,
///
/// </summary>
public static void DoTest1()
{
//将一个符合委托要求的方法 GetUserId赋值给getString
GetId getId = GetUserId;
//使用函数方法
string curId1 = getId("学号1011");
Console.WriteLine(curId1);
//将第二个符合委托要求的方法 GetClassId赋值给getString
getId = GetClassId;
string curId2 = getId("班级981");
Console.WriteLine(curId2);
}
}
代码说明
定义了一个委托,功能是得到Id
定义了两个符合委托规范的函数的实现, GetUserId与GetClassId.
当前GetUserId与GetClassId这两个函数的名,给当前委托GetId,完成委托的实例化。
最后进行使用委托实例化getId进行函数调用与输出。
以上代码的结果是:
当前用户Id学号1011
当前班级的Id是:班级981
本文暂时没有评论,来添加一个吧(●'◡'●)