zoukankan      html  css  js  c++  java
  • 对委托 以及 action func 匿名函数 以及 lambda表达式的简单记录

     1 class Program
     2     {
     3 
     4         public delegate void MyDelegate(string str);
     5 
     6         static void Main(string[] args)
     7         {
     8             //
     9             MyDelegate d1 = Print;
    10 
    11             d1("简写的触发");
    12             //
    13             d1 = new MyDelegate(Print);
    14             //
    15             d1.Invoke("使用invoke触发");
    16 
    17             //多播委托  如果在此之前没有 赋值操作将会报错
    18             d1 += Print;
    19 
    20             d1("触发两次");
    21 
    22             Console.WriteLine("让我们来看一看报错的信息");
    23 
    24          /*
    25                 MyDelegate d2 = new MyDelegate();
    26                 d2 += Print;    //在compile 阶段就会提示你要赋值
    27           **/
    28 
    29             //使用action 来声明委托
    30 
    31             Action<string> action = Print;
    32             action("action委托");
    33 
    34             //Func<Treturn,Tin..> 适用于具有返回值的委托
    35 
    36 
    37             //之前是表明委托如何定义 的, 下面才是委托的真正的用法 ,即 作为一个函数的参数
    38             //比如我们在下面定义了一个函数 ,这个函数用于输出
    39             //我们给他传入不同的action来输出 ,那就可以达到不同的输出效果
    40             ActionPrint(Print,"123");
    41             ActionPrint(str=>Console.Write("使用lambda表达式:"+str),"123");
    42 
    43 
    44             //匿名方法
    45             string mid = "中间值";
    46             Func<string, string> anonDel = delegate(string str)
    47             {
    48                 str += mid;
    49                 str += " 添加到这个字符串中";
    50                 return str;
    51             };
    52 
    53             Console.WriteLine(anonDel("123"));
    54 
    55             //lambda 表达式 只要有委托参数类型的地方 ,就可以使用lambda表达式 比如上面的例子
    56 
    57             Func<string, string> anonLambda = str =>
    58             {
    59                 str += mid;
    60                 str += " 添加到这个字符串中";
    61                 return str;
    62             };
    63 
    64             //甚至如果lambda表达式中只需要一个方法的时候 我们还可以使用最简写的方法齐群 囧 其实就是委托....
    65             Action<string> anonAction = Print;
    66             Console.Read();
    67 
    68         }
    69 
    70         public static void Print(string str)
    71         {
    72             Console.WriteLine("输出{0}",str);
    73         }
    74 
    75 
    76         public static void ActionPrint(Action<string> action,string str)
    77         {
    78             action(str);
    79         }
    80     }
  • 相关阅读:
    C# 创建与读写配置文件
    C# 绘图三种方式
    WindowsForms获取服务名称
    Hbase之JAVA API不能远程访问问题解决
    Jenkins之自动构建
    Jenkins配置匿名用户拥有只读权限
    XShell中文乱码问题解决
    mybatis之关联(2)
    mybatis之动态SQL
    mybatis之一对一关联
  • 原文地址:https://www.cnblogs.com/qingtianMo/p/5327839.html
Copyright © 2011-2022 走看看