委派的多点传输

简介: 可以使用一个委派调用多个方法,委派和方法都有一个限制:委派和方法都必须返回void。     下面的例子定义了一个叫DelegateCalculation的返回值为void的派生类:     public delegate void DelegateCalculation(   ...
        可以使用一个委派调用多个方法,委派和方法都有一个限制:委派和方法都必须返回void。

    下面的例子定义了一个叫DelegateCalculation的返回值为void的派生类:

    public delegate void DelegateCalculation(
        double acceleration, double time
    );

 
 
1 /*
2 Example12_2.cs illustrates the use of a multicast delegate
3   */
4
5 using System;
6
7
8 // declare the DelegateCalculation delegate class
9 public delegate void DelegateCalculation(
10 double acceleration, double time
11 );
12
13
14 // declare the MotionCalculations class
15 public class MotionCalculations
16 {
17
18 // FinalSpeed() calculates the final speed
19 public static void FinalSpeed(
20 double acceleration, double time
21 )
22 {
23 double finalSpeed = acceleration * time;
24 Console.WriteLine( " finalSpeed = " + finalSpeed +
25 " meters per second " );
26 }
27
28 // Distance() calculates the distance traveled
29 public static void Distance(
30 double acceleration, double time
31 )
32 {
33 double distance = acceleration * Math.Pow(time, 2 ) / 2 ;
34 Console.WriteLine( " distance = " + distance + " meters " );
35 }
36
37 }
38
39
40 class Example12_2
41 {
42
43 public static void Main()
44 {
45
46 // declare and initialize the acceleration and time
47 double acceleration = 10 ; // meters per second per second
48 double time = 5 ; // seconds
49 Console.WriteLine( " acceleration = " + acceleration +
50 " meters per second per second " );
51 Console.WriteLine( " time = " + time + " seconds " );
52
53 // create delegate object that call the
54 // MotionCalculations.FinalSpeed() and
55 // MotionCalculations.Distance() methods
56 DelegateCalculation myDelegateCalculation1 =
57 new DelegateCalculation(MotionCalculations.FinalSpeed);
58 DelegateCalculation myDelegateCalculation2 =
59 new DelegateCalculation(MotionCalculations.Distance);
60
61 // create a multicast delegate object from
62 // myDelegateCalculation1 and
63 // myDelegateCalculation2
64 DelegateCalculation myDelegateCalculations =
65 myDelegateCalculation1 + myDelegateCalculation2;
66
67 // calculate and display the final speed and distance
68 // using myDelegateCalculations
69 myDelegateCalculations(acceleration, time);
70
71 }
72
73 }

       接着,在MotionCalculations类中定义两个返回void的叫FinalSpeed和Distancede方法。

    

 
 
public class MotionCalculations
{

// FinalSpeed() calculates the final speed
public static void FinalSpeed(
double acceleration, double time
)
{
double finalSpeed = acceleration * time;
Console.WriteLine(
" finalSpeed = " + finalSpeed +
" meters per second " );
}

// Distance() calculates the distance traveled
public static void Distance(
double acceleration, double time
)
{
double distance = acceleration * Math.Pow(time, 2 ) / 2 ;
Console.WriteLine(
" distance = " + distance + " meters " );
}

}

接着,创建两个委派对象,并把MotionCalculations.FinalSpeed和MotionCalculations.Distance传递给它的构建函数

 

 
 
DelegateCalculation myDelegateCalculation1 =
new DelegateCalculation(MotionCalculations.FinalSpeed);
DelegateCalculation myDelegateCalculation2
=
new DelegateCalculation(MotionCalculations.Distance);

这两个委派可以使用重载的加运算符(+)来合在一起

   

 
 
myDelegateCalculations(acceleration, time);

全部代码为:

 

相关文章
|
8月前
|
域名解析 负载均衡 网络协议
【计算机网络】什么是区域传输?
【1月更文挑战第10天】【计算机网络】什么是区域传输?
|
8月前
|
网络协议 算法 网络虚拟化
【计算机网络】第三章 数据链路层(点对点协议 媒体介入控制)
【计算机网络】第三章 数据链路层(点对点协议 媒体介入控制)
94 0
|
7月前
|
网络协议 C语言 网络架构
计算机网络——数据链路层-点对点协议(组成部分、PPP帧格式、透明传输、差错检测、工作状态)
计算机网络——数据链路层-点对点协议(组成部分、PPP帧格式、透明传输、差错检测、工作状态)
360 7
|
8月前
|
监控 网络架构 负载均衡
|
7月前
|
缓存
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
239 0
计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)
|
7月前
|
缓存 网络架构
计算机网络——数据链路层-可靠传输的实现机制:停止-等待协议SW(确认与否认、超时重传等,信道利用率及相关练习题)
计算机网络——数据链路层-可靠传输的实现机制:停止-等待协议SW(确认与否认、超时重传等,信道利用率及相关练习题)
156 0
|
8月前
|
算法
计算机网络:封装成帧 & 透明传输 & 差错检测
计算机网络:封装成帧 & 透明传输 & 差错检测
227 0
|
8月前
第二节-数据封装+传输介质
第二节-数据封装+传输介质
59 0
|
8月前
|
负载均衡 大数据 网络虚拟化
大二层—多链接透明互联协议如何工作
【2月更文挑战第11天】大二层就引入了 TRILL(Transparent Interconnection of Lots of Link),即多链接透明互联协议。它的基本思想是,二层环有问题,三层环没有问题,那就把三层的路由能力模拟在二层实现。
|
8月前
|
网络架构
【数据链路层】封装成帧和透明传输和差错控制
【数据链路层】封装成帧和透明传输和差错控制
141 1