匿名函數、委託、lambda表達式、擴展方法

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

namespace 匿名函數與lambda
{
    class Program
    {
        static void Main(string[] args)
        {
            //委託調用方法
            someDelegate1 sv = new someDelegate1(SayHello);

            //匿名函數 只能在委託中使用
            //語法  委託對象=delegate(參數列表){表達式};
            someDelegate f = delegate(string s)
            {
                Console.WriteLine("匿名函數:hello," + s);
            };
            f("zhangfeng");
            //lambda表達式,簡化操作,初看很恐怖,多用於和linq混合使用
            someDelegate f1 = (s1) =>
            {
                Console.WriteLine("lambda表達式:hi,"+s1);
            };
            f1("lambda");
            //lambda表達式+linq示例
            int[] values = { 3, 6, 9, -7, 32 };
            foreach (int i in values.Select(i => i * 2))
            {
                Console.WriteLine(i);
            }

            //擴展方法  .net 3.5版本新加的,早期版本用不了,linq是用擴展方法實現的
            string str1 = "[email protected]";
            //擴展方法的調用,調用擴展方法,第一個參數 其實是.前面的對象
            Console.WriteLine(str1.IsEmail());
            //跟擴展方法比較,普通調用
            Console.WriteLine(StringHelper.IsEmail(str1));
            //擴展方法重載,第二個參數照實寫
            Console.WriteLine(str1.IsEmail("sv"));

            Console.Read();
        }
        static string SayHello()
        {
            return "h1";
        }

    }
    //實現擴展方法,定義類前面要加static
    static class StringHelper
    {
        //方法前面要加static(靜態類中方法必須加static),參數變量加this,第一個參數爲待擴展的類型,調用他的類型必須與第一個參數類型相同
        public static bool IsEmail(this string s)
        {
            if(s.Contains("@"))
            {
                return true;
            }
            return false;
        }
        public static bool IsEmail(this string s,string v)
        {
            if (s.Contains("@"))
            {
                return true;
            }
            return false;
        }
    }
    delegate void someDelegate(string s);
    delegate string someDelegate1();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章