首页 > 其他 > 详细

泛型委托深入

时间:2014-02-23 08:18:16      阅读:415      评论:0      收藏:0      [点我收藏+]

 1) 隐式类型Var的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
static void Main(string[] args)       
 
     {   
 
         //隐式类型          
 
        var person = new {name ="小明",age="12"};   //不需要定义类的名称      
        Console.WriteLine(person.name);
 
        //如果使用object,访问不了匿名类的属性name和age,如果想访问的到,可以使用反射!
 
        
        Console.ReadKey();        
 
     }

 

2)匿名函数和lambda表达式的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
internal delegate int DemoAdd(int a, int b);
 
class Program
{
 
    static void Main(string[] args)
    {
 
       //匿名函数的关键字就是delegate开头的,(类似于javascript的function),后面紧接着函数的参数,后面是函数体   
        DemoAdd demoAdd = delegate(int a, int b) { return a + b; };
       //以上用Lambda表示式,=>表示成goto
        DemoAdd lamdaDemoAdd = ( a, b) => { return a + b; };
       
        DemoAdd lamdaDemoAdd1 = ( a, b) => a + b;
        Console.ReadKey();
       
    }
}

 

 

3)泛型委托

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
internal delegate int DemoAdd(int a, int b);
 
    //定义泛型返回值
    delegate T DemoAdd<T>(int a ,int b);
    //参数也定义泛型
    delegate T DemoAdd1<T,T1,T2>(T1 a, T2 b);
    
    class Program
    {
    
        static void Main(string[] args)
        {
            //泛型返回值
            DemoAdd<string> demoAdd = (a, b) => (a + b).ToString();
            //参数类型为String,返回类型是字符串
            DemoAdd1<string,string,string > demoAdd1 = (a, b) => (a + b).ToString();
            //参数类型为int,返回类型也是整型
            DemoAdd1<int, int, int> demoAdd2 = (a, b) => a + b;
 
        }
    }

 4)Func<T, TResult> 委托 ,可以使用此委托表示一种能以参数形式传递的方法,而不用显式声明自定义委托。 封装的方法必须与此委托定义的方法签名相对应。 也就是说,封装的方法必须具有一个通过值传递给它的参数,并且必须返回值。

bubuko.com,布布扣
 //Func与Action的区别:Action是没有返回值,Func有返回值
    internal delegate TResult Func<in T, out TResult>(
        T args
        );
   
    class Program
    {
   
        static void Main(string[] args)
        {
            //所用的方法是实例化 Func<T, TResult> 委托,而不是显式定义一个新委托并将命名方法分配给该委托。
           //传入参数是字符串,返回值也是字符串
            Func<string, string> convertMethod = UppercaseString;
            string name = "Dakota";
            Console.WriteLine(convertMethod(name));
        }

        private static string UppercaseString(string inputString)
        {
            return inputString.ToUpper();
        }
    }
bubuko.com,布布扣

泛型委托深入

原文:http://www.cnblogs.com/chaohome/p/3561238.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!