委托学习

委托:如果我们要把方法当做参数来传递的话,就要用到委托。简单来说 委托
是一个类型,这个类型可以赋值一个方法的引用。
对于委托类型可以赋值一个方法的引用 ,可以把一个方法赋值过来,通过这个委托变量调用这个方法

声明委托:
在C#中使用一个类分两个阶段,首选定义这个类,告诉编译器这个类由什么字段和方法组成的,然后使用这个类实例化对象。在我们使用委托的时候,也需要经过这两个阶段,首先定义委托,告诉编译器我们这个委托可以指向哪些类型的方法,然后,创建该委托的实例。

private delegate string GetAString();

static void Main(){
int x = 40;
GetAString firstStringMethod = new GetAString(x.ToString);
Console.WriteLine(firstStringMethod());
}

委托的赋值:
GetAString firstStringMethod = new GetAString(x.ToString);只需要把方法名给一个委托的构造方法就可以了
GetAString firstStringMethod = x.ToString;也可以把方法名直接给委托的实例

using System;
using System.Collections.Generic;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 委托
{
class Program
{
delegate string Text();//声明一个委托
static void Main(string[] args)
{
int age = 27;
//string s = age.ToString();//转换为string类型
// Text t = new Text(age.ToString);//t指向的就是tostring()这个方法
//string s = t();//通过委托实例去调用方法
// string s = t.Invoke();
Text t = age.ToString;//把方法赋值给委托类型的变量
//string s = t();
string s = t.Invoke();
Console.WriteLine(s);
Console.ReadKey();

    }
}

}

using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 委托1
{
delegate void Text();
class Program
{
static void text1(Text t)
{
t();
}
static void text2()
{
Console.WriteLine(“测试2”);
}
static void text3()
{
Console.WriteLine(“测试3”);
}
static void Main(string[] args)
{
Text T = text2;
text1(T);
Console.ReadKey();
}
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication25
{

class Program
{
   public delegate void Text();//委托的命名类型必须与要实现的方法一致,参数一致
   public static void text2(Text t)//委托类型的变量可以当成一个方法来用
    {
        t();
    }
    public static void text1()
    {
        Console.WriteLine("测试1");
    }
    public static string text(string name)
    {
        Console.WriteLine("测试");
        return name;
    }
    static void Main(string[] args)
    {
        Text T =text1;
        text2(text1);
        //T("dfsg");
        Console.ReadKey();
    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值