• C#学习笔记(26)——委托计算器


    说明(2017-11-20 15:14:18):

    1. 委托一直稀里糊涂的,有人说简单,有人说难,艹你们!

    2. 其实主要是因为,平时不用委托也能解决大部分问题,所以都没有特意去用,网上也没有什么很好的应用例子,基本都是为了解释委托,生造出来的例子,没什么应用价值。

    3. 这个计算器委托示例,是CZ的蒋坤老师讲的,还是比较容易学习的,他把委托的使用定为五步:1.准备方法。2.准备委托类型。3.定义委托变量。4.授权方法。5.调用方法。

    4. 简单的委托,只需要返回一个参数就可以了。计算器因为是有4个加减乘除的方法,开始我还想着怎么把4个方法绑定到一个委托上。后来看了视频才知道,需要新建一个返回值是委托的Factory方法,用来返回这四个方法的返回值。

    5. 这个计算器不用委托也能做,目前我知道的要用委托的地方只有杨洪波在三层里讲的,winform里的窗体传值。

    6. 后面还有一个事件,说是比委托安全,因为委托人人都能调用(这么随便?),等看到再说吧!

    7. 为啥现在突然回过头来看委托?是因为asp.net看到最后,不懂委托实在是看不下去了。。

    代码:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 namespace _03_计算器
     7 {
     8     class Program
     9     {
    10         //2.准备委托类型。声明委托,返回值、参数与运算符方法相同。
    11         public delegate double MyDel(double num1, double num2);
    12 
    13         static void Main(string[] args)
    14         {
    15 
    16             Console.WriteLine("输入数字1:");
    17             double num1 = double.Parse(Console.ReadLine());
    18             Console.WriteLine("输入运算符(+_*/):");
    19             string opera = Console.ReadLine();
    20             Console.WriteLine("输入数字2:");
    21             double num2 = double.Parse(Console.ReadLine());
    22             //3.定义委托变量。注意不能加括号!!!
    23             MyDel myDel;
    24             //4.授权方法。
    25             myDel= Factory(opera);
    26             if (myDel != null)
    27             {
    28                 //5.调用方法。
    29                 //等同于Factory()。
    30                 double result = myDel(num1, num2);
    31                 Console.WriteLine("计算结果:{0}{1}{2}={3}", num1, opera, num2, result);
    32             }
    33             else
    34             {
    35                 Console.WriteLine("运算符有误");
    36             }
    37 
    38 
    39             Console.ReadKey();
    40 
    41 
    42         }
    43         //定义委托方法(定义一个返回委托类型的方法)
    44         public static MyDel Factory(string opera)
    45         {
    46             switch (opera)
    47             {
    48                 case "+":
    49                     return Add;
    50                 case "-":
    51                     return Minus;
    52                 case "*":
    53                     return Multiply;
    54                 case "/":
    55                     return Divide;
    56                 default:
    57                     return null;
    58             }
    59         }
    60         //1.准备运算符方法。
    61         private static double Add(double num1, double num2)
    62         {
    63             return num1 + num2;
    64         }
    65         private static double Minus(double num1, double num2)
    66         {
    67             return num1 - num2;
    68         }
    69         private static double Multiply(double num1, double num2)
    70         {
    71             return num1 * num2;
    72         }
    73         private static double Divide(double num1, double num2)
    74         {
    75             return num1 / num2;
    76         }
    77 
    78     }
    79 }
  • 相关阅读:
    [no_code][Beta]事后分析
    [no_code][Beta]项目展示博客
    [no_code][Beta]测试报告
    [no_code][Beta]发布声明报告
    [no code][scrum meeting] Beta 12
    [no code][scrum meeting] Beta 11
    [no code][scrum meeting] Beta 10
    [no code][scrum meeting] Beta 9
    [no code][scrum meeting] Beta 8
    [no_code][Beta] 中期组内总结
  • 原文地址:https://www.cnblogs.com/Jacklovely/p/7866538.html
Copyright © 2020-2023  润新知