delegate 委托一例(3)

原创 2012年03月26日 12:26:47
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleTest
{
    public delegate void DelegCalc(params int[] oParams);

    public class delegateTest
    {

        public static void Calc(DelegCalc deleg, params int[] oParams)
        {
            deleg(oParams);
        }

        //三角形
        public static void CalcArea_Triangle(int[] iWidth)
        {
            Console.WriteLine("三角形 宽度:{0},高度:{1},面积:{2}", iWidth[0], iWidth[1], iWidth[0] * iWidth[1] / 2.0);
        }

        //长方形
        public static void CalcArea_Rectangle(int[] iWidth)
        {
            Console.WriteLine("长方形 宽度:{0},高度:{1},面积:{2}", iWidth[0], iWidth[1], iWidth[0] * iWidth[1]);
        }

        //梯形
        public static void CalcArea_Trapezoid(int[] iA)
        {
            Console.WriteLine("梯形 上底:{0},下底:{1},高度:{2},面积:{3}", iA[0], iA[1], iA[2], (iA[0] + iA[1]) * iA[2] / 2.0);
        }

        //圆
        public static void CalcArea_Circle(int[] iR)
        {
            Console.WriteLine("圆 半径:{0},面积:{1}", iR[0], Math.PI * iR[0] * iR[0]);
        }

        //三角形周长
        public static void CalcGirth_Triangle(int[] iA)
        {
            Console.WriteLine("三角形 边1:{0},边2:{1},边3:{2},周长:{3}", iA[0], iA[1], iA[2], iA[0]+ iA[1]+iA[2]);
        }

        public static void CalcGirth_Rectangle(int[] iA)
        {
            Console.WriteLine("长方形 边1:{0},边2:{1},周长:{2}", iA[0], iA[1], (iA[0] + iA[1]) * 2);
        }

        public static void CalcGirth_Trapezoid(int[] iA)
        {
            Console.WriteLine("梯形 边1:{0},边2:{1},边3:{2},边4:{3},周长:{4}", iA[0], iA[1], iA[2], iA[3], iA[0] + iA[1] + iA[2] + iA[3]);
        }

        public static void CalcGirth_Circle(int[] iR)
        {
            Console.WriteLine("圆 半径:{0},周长:{1}", iR[0],2*Math.PI*iR[0]);
        }

    }

    class delegateClass2
    {
        static void Main()
        {
            delegateTest.Calc(delegateTest.CalcGirth_Circle, new int[]{3});//圆周长
            delegateTest.Calc(delegateTest.CalcGirth_Rectangle, new int[] { 3,4 });//长方形周长
            delegateTest.Calc(delegateTest.CalcGirth_Trapezoid, new int[] { 3, 4,5,6 });//梯形周长
            delegateTest.Calc(delegateTest.CalcGirth_Triangle, new int[] { 3, 4, 5, 6 });//三角形周长
            delegateTest.Calc(delegateTest.CalcArea_Circle, new int[] { 3 });//圆面积
            delegateTest.Calc(delegateTest.CalcArea_Rectangle, new int[] { 3,4 });//长方形面积
            delegateTest.Calc(delegateTest.CalcArea_Trapezoid, new int[] { 3, 4,5 });//梯形面积
            delegateTest.Calc(delegateTest.CalcArea_Triangle, new int[] { 3, 4});//三角形面积
            Console.ReadLine();
        }
    }
}


运行效果:

组件接口(API)设计指南[3]-委托(delegate)和数据源协议(data-source protocols)

我们几乎可以在任何组件中利用经典的委托(delegate)和数据源协议(data-source protocols)。如果你想显示一些数据,那么数据源协议可能就非常适合你,例如你有以下问题: ...

C#基础-3:委托(Delegate)

委托(delegate)简单来看就是一种指向方法的引用对象。其实,delegate就是一个类,其持有所指向的方法的地址。 委托可以引用一个方法,也可以应用多个方法,当引用多个方法的时候,称之为多路广播...

从头学XML和Java编程一例通.part3.rar

  • 2007年10月08日 20:05
  • 9.54MB
  • 下载

delegate委托

  • 2017年12月05日 16:25
  • 1KB
  • 下载

C#_delegate - 用委托实现事件,Display和Log类都使用Clock对象

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T...

.Net C#委托 delegate

  • 2011年01月11日 14:09
  • 205KB
  • 下载

事件/委托机制(event/delegate)(Unity3D开发之十七)

Delegate作用我就不多说了,Unity中可以直接使用EventHandler实现事件委托,咱们直接事例吧。一、场景物体移动结束后事件监听假如PlayerControl,移动结束后触发MoveCo...

C++中实现委托(delegate)

  • 2011年05月06日 13:07
  • 5.1MB
  • 下载

CSharp_Delegate C#委托

  • 2013年10月24日 21:29
  • 32KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:delegate 委托一例(3)
举报原因:
原因补充:

(最多只允许输入30个字)