zoukankan      html  css  js  c++  java
  • C#高级功能(三)Action、Func,Tuple

    Action和Func泛型委托实际上就是一个.NET Framework预定义的委托,3.5引入的特性。基本涵盖了所有常用的委托,所以一般不用用户重新声明。Action系列泛型委托,是没有返回参数的委托,最多可以有16参数,也可以没有参数;Func系列的委托是有返回值的委托,最多可以有16个参数;元组是C# 4.0引入的一个新特性,编写的时候需要基于.NET Framework 4.0或者更高版本。元组使用泛型来简化一个类的定义.提供用于创造元组对象的静态方法。最多可以提供创建新的 8 元组,即八元组。

    Action

    此委托可用于将方法作为参数传递而不用显式声明自定义委托。 封装的方法必须对应于此委托定义方法签名。 这意味着,封装的方法必须具有任何参数,没有返回值。

    public delegate void Action()

    //void method(); Action test1 = () => { Console.WriteLine("void method();"); }; //void method(x); Action<int> test2 = (x) => { Console.WriteLine("void method(t1)"); }; //void method(x, y); Action<int, int> test3 = (x, y) => { Console.WriteLine("void method(t1, t2)"); };
    public delegate void Action<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, in T9,
     in T10, in T11, in T12, in T13, in T14, in T15, in T16>()

    Func

    可以使用此委托来表示的方法,而无需显式声明自定义的委托作为参数进行传递。 封装的方法必须对应于此委托定义的方法签名。 这意味着,封装的方法可以具有任何参数,并且必须返回一个值。

    public delegate TResult Func<out TResult>()
    //int method();
    Func<int> test4 = () => 10;
    //int method(x);
    Func<int, int> test5 = (x) => x * 2;
    //int method(x,x);
    Func<int, int, int> test6 = (x, y) => x * y;
    public delegate TResult Func<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, in T9, in T10,
     in T11, in T12, in T13, in T14, in T15, in T16, out TResult>()

    Tuple

    元组是一种数据结构,具有特定数量和元素序列,用在方法上可以作为返回值,返回多个数据。

    public static Tuple<T1> Create<T1>(
        T1 item1
    )
    var tuple1 = Tuple.Create(1);
    Console.WriteLine(tuple1.Item1);     // Displays 1
    
    var tuple1 = new Tuple<int>(1);
    Console.WriteLine(tuple1.Item1);     // Displays 1

    Tuple.Create<T1, T2, T3, T4, T5, T6, T7, T8> 方法 (T1, T2, T3, T4, T5, T6, T7, T8)
    
    var primes = new Tuple<int, int, int, int, int, int, int, 
                     Tuple<int>>(1, 2, 3, 4, 5, 6, 7,   new Tuple<int>(8));//元祖里面可以嵌套元祖
    
    
    Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>> test = 

    new Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>>(1, 2, 3, 4, 5, 6, 7, new Tuple<int, int, int>(8, 9));

    //元祖准确的可以说是当做拥有多个返回值的一种方法,不用使用ref,out了,比较方便。

     

    其他的基础功能

    1.  C#高级功能(四)扩展方法和索引

    2. C#高级功能(三)Action、Func,Tuple

    3. C#高级功能(二)LINQ 和Enumerable类

    4. C#高级功能(一)Lambda 表达式

    5. C#中泛型的解释(object,list,var,dynamic的区别)

    6. C#中委托

    7. C#和.NET版本对比

  • 相关阅读:
    Linux下使用mail发送邮件
    Thirft框架介绍
    当谈论设备指纹时,我们到底在说什么?(转)
    设备指纹(Device Fingerprinting)是什么?
    搭建RESTful API 之 实现WSGI服务的URL映射
    OpenStack设计与实现5——RESTful API和WSGI
    Charles使用
    iBeacon室内定位原理解析【转】
    docker安装
    chase
  • 原文地址:https://www.cnblogs.com/zhao123/p/5639082.html
Copyright © 2011-2022 走看看