Bootstrap

C#匿名函数

C#中委托的演变
C#1 中,通过使用在代码中其他位置定义的方法显式初始化委托来创建委托的实例
C#2中,引入了匿名方法的概念,作为一种编写可在委托调用中执行的未命名内联句块的方式
C#3 中,引入了lambda 表达式,这种表达式和匿名方法类似,但更具表达力 更简单。
匿名方法 和lambda表达式 合起来被称为匿名函数

    class Program
    {
        delegate void TestDelegate(string s);
        static void M(string s)
        {
            Console.WriteLine(s);
        }

        static void Main(string[] args)
        {
            TestDelegate testD1 = new TestDelegate(M);// C#1 

            TestDelegate testD2 = delegate (string s) { Console.WriteLine(s); }; // C#2 

            TestDelegate testD3 = (x) => { Console.WriteLine(x); }; //C#3

            testD1("I am from C#1");
            testD2("I am from C#2");
            testD3("I am from C#3");


        }
    }```



```csharp

    class Program
    {
        delegate bool  CompareString(string s1,string s2);
        static void M(string s)
        {
            Console.WriteLine(s);
        }

        static string getString(string s1, string s2, CompareString prediction)
        {
            if (prediction(s1, s2))
                return s1;
            else
                return s2;
        }

        static void Main(string[] args)
        {
            //C#2
            string ifGreater = getString("xx", "aa", delegate (string x1, string x2) { if (string.Compare(x1, x2) >= 0) return true; else return false; });
            //C#3
            string ifSmaller = getString("xx", "aa", (x1, x2) => { if (string.Compare(x2, x1) >= 0) return true; else return false; });


            Console.WriteLine(ifGreater);
            Console.WriteLine(ifSmaller);

        }
    }

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;