1.委托(delegate)调用静态方法

委托类似于C++中的函数指针。

某方法仅仅在执行的时候才能确定是否被调用。

是实现事件和回调函数的基础。

面向对象,安全性高.

using System;
using System.IO; namespace IO
{
class Program
{
// 声明一个delegate(委托)
delegate int NumberChanger(int n);
static int num = ;
static void Main(string[] args)
{
// 实例化一个委托,构造函数内是符合要求的静态函数
NumberChanger nc1 = new NumberChanger(AddNum);
// 调用方式与调用方法一致
nc1();
Console.WriteLine(num);
} // 声明一个符合要求的静态方法,该方法的返回值以及参数列表必须与所声明的委托一致 public static int AddNum(int p)
{
num += p;
return num;
}
} }

2.通过委托调用实例化方法

using System;
using System.IO; namespace IO
{
class Program
{
// 声明一个delegate(委托)
delegate int NumberChanger(int n);
static void Main(string[] args)
{
MyClass mc = new MyClass();
NumberChanger nc2 = new NumberChanger(mc.AddNum);
Console.WriteLine(nc2());
} } class MyClass
{
private int num = ;
public int AddNum(int p)
{
num += p;
return num;
}
} }

3. multi-delegete(多重委托)

同时委托调用多个方法

using System;
using System.IO; namespace IO
{
class Program
{
delegate void D(int x);
static void Main(string[] args)
{ D cd1 = new D(C.M1);
cd1(-);
Console.WriteLine();
D cd2 = new D(C.M2);
cd1(-);
Console.WriteLine();
D cd3 = cd1 + cd2;
cd3();
Console.WriteLine(); C c = new C();
D cd4 = new D(c.M3);
cd3 += cd4;
cd3();
Console.WriteLine(); cd3 -= cd4;
cd3();
} } class C
{
public static void M1(int i)
{
Console.WriteLine("C.M1" + i);
} public static void M2(int i)
{
Console.WriteLine("C.M2" + i);
} public void M3(int i)
{
Console.WriteLine("C.M3" + i);
}
} }

MVC09的更多相关文章

  1. MVC-09安全

    部分8:添加安全. MVC应用程序安全性 Models文件夹包含表示应用程序模型的类. Visual Web Developer自动创建AccountModels.cs文件,该文件包含用于应用程序认证 ...

随机推荐

  1. 手机APP例如抖音,让 people‘s 注意力集中到了 社会进化的 优胜部分 (优胜劣汰,什么是优) + 真善美,的 “美” , 促进了2极分化, 会产生强者俞强,弱者越弱,确实促进了信息的流通,传播了有用的东东 产生了独特的价值 而 如何 能计算出这些价值呢, 需要 数学 金融 财务 货币 量化吗

    手机APP例如抖音,让      people‘s  注意力集中到了  社会进化的 优胜部分  (优胜劣汰,什么是优)   +     真善美,的  “美”        , 促进了2极分化, 会产生 ...

  2. redis day02

    Redis -带过期时间的key  如何删除掉的? 在redis内部有个  过期字典,所有带过期时间的都有过期字典 默认情况下 redis每秒会进行着10次过期字典的扫描,在每一次扫描过程里,执行如下 ...

  3. 序列化模块ModelSerializer

    课程准备 配置:settings.py INSTALLED_APPS = [ # ... 'rest_framework', ] DATABASES = { 'default': { 'ENGINE' ...

  4. How Cocoa Beans Grow And Are Harvested Into Chocolate

    What is Cocoa Beans Do you like chocolate? Most people do. The smooth, brown candy is deliciously sw ...

  5. linux系统用户管理(一)

    Linux系统用户管理1.用户管理*****2.Linux用户命令****3.用户创建的原理***4.密码管理***5.组命令管理**6.身份切换*****7.sudo提升权限***** 我们现在所使 ...

  6. 整理汇总系统中空值的使用方法,后台+jsp

    一.后台: 1. entity.getStringValue().isEmpty()://字符串自带方法,未发现非空方法实现原理:判断值的长度 public boolean isEmpty() { r ...

  7. 谷歌眼镜、亚马逊音箱,5G时代隐私或将面临更大颠覆

    别看现在的智能手机.平板电脑.可穿戴设备.智能家居等那么火爆,但离开网络它们其实什么也不是.当然,智能终端设备的迭进也是与网络制式不断向前演变相辅相成的,二者算是互相成就.不过也由此衍生出很多问题,尤 ...

  8. miracle|

    N-COUNT 奇迹;出人意料的事If you say that a good event is a miracle, you mean that it is very surprising and ...

  9. unittest(20)- 自动更新表格中的数据(3)

    通过函数获取表格中的手机号 # 1. get_data.py from tools import project_path import pandas as pd class GetData: Coo ...

  10. 数据库中慎用float数据类型(转载)

    数据库中慎用float数据类型   大多数编程语言都支持float或者double的数据类型.而数据库中也有相同关键字的数据类型,因此很多开发人员也自然而然地在需要浮点数的地方使用float作为字段类 ...