C#委托基础7——匿名方法

C#委托基础系列原于2011年2月份发表在我的新浪博客中,现在将其般至本博客。

 

class Program
{
        double AddInt(int x, int y)
        {
            return x + y;
        }

        string AddString(string s1, string s2)
        {
            return s1 + s2;
        }

        static void Main(string[] args)
        {
            Program p = new Program();

            // 以为前两个参数为int,他们运行的结果为double,最后一个参数与AddInt返回值一致
            Func<int, int, double> funcInt = p.AddInt;
            Console.WriteLine("funcInt的值为{0}", funcInt(100, 300));

            Func<string, string, string> funcString = p.AddString;
            Console.WriteLine("funcString的值为{0}", funcString("aaa", "bbb"));

            // 匿名方法
            Func<float, float, float> fucFloat = delegate(float x, float y)
            {
                return x + y;
            };
            Console.WriteLine("funcFloat的值为{0}", fucFloat(190.7F, 99999.9F));
            Console.ReadLine();
        }
}

本文参考自金旭亮老师的《.NET 4.0面向对象编程漫谈》有关代理的内容

时间: 2024-12-29 02:11:54

C#委托基础7——匿名方法的相关文章

C# 2.0 Specification(匿名方法)(一)

21匿名方法21.1.匿名方法表达式匿名方法表达式(anonymous-method-expression)定义了匿名方法(anonymous method),它将计算为引用该方法的一个具体值. l primary-no-array-creation-expression(基本非数组创建表达式:)-anonymous-method-expression(匿名方法表达式) l anonymous-method-expression:delegate anonymous-method-signatu

C# 2.0的Specification(匿名方法)(一)

21匿名方法21.1.匿名方法表达式 匿名方法表达式(anonymous-method-expression)定义了匿名方法(anonymous method),它将计算为引用该方法的一个具体值. l primary-no-array-creation-expression(基本非数组创建表达式:) - anonymous-method-expression(匿名方法表达式) l anonymous-method-expression: delegate anonymous-method-sig

C# 匿名方法

匿名方法是在C#2.0时引入的,C#3.0中仍然可以使用.通常给委托对象赋值一个方法时,要先定义这个方法,然后把方法名赋给委托对象,使用匿名方法可以直接将代码块赋给委托对象,不需要方法名,所以称为匿名方法.这个功能省去创建委托时想要传递给一个委托的小型代码块的一个额外的步骤.它也消除了类代码中小型方法的混乱.下面的代码说明使用匿名方法可以直接将代码块赋给委托对象,不需要方法名. class Program { delegate void Mydelegate(string str); //声明委

高阶函数、委托与匿名方法

高阶函数(higher-order function)是指把另一个函数作为参数或返回值的函数.例如 在JavaScript语言中,Function是顶级类型.一个函数就是类型为 Function的顶级对象,自 然就可以作为另一个函数的参数或返回值.例如在Microsoft AJAX Library(ASP.NET AJAX 的客户端类库)中有一个被广泛使用的createDelegate方法.该方法接受一个对象A和一个函 数F作为参数,并返回一个函数R.当调用函 数R时,F函数将被调用,并且保证无

C#用匿名方法定义委托的实现方法

  本文实例讲述了C#用匿名方法定义委托的实现方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 //用匿名方法定义委托 class Program { delegate string MyDelagate(string val); static void Main(string[] args) { string str1 = " 匿名方法外部 "; //中括号部分定义来了一个方法,没有名称

C# 委托 事件 匿名方法

(*) 委托 delegate 从最简单的例子开始: namespace ConsoleApplication1 { class Program { // 委托其实就相当于一个类型.这里,类型的名字叫BinaryOp public delegate int BinaryOp(int x, int y); static public int Add(int x, int y) { return x + y; } static void Main() { // 创建一个BinaryOp类型的实例,用

编写高质量代码改善C#程序的157个建议[为泛型指定初始值、使用委托声明、使用Lambda替代方法和匿名方法]

原文:编写高质量代码改善C#程序的157个建议[为泛型指定初始值.使用委托声明.使用Lambda替代方法和匿名方法] 前言 泛型并不是C#语言一开始就带有的特性,而是在FCL2.0之后实现的新功能.基于泛型,我们得以将类型参数化,以便更大范围地进行代码复用.同时,它减少了泛型类及泛型方法中的转型,确保了类型安全.委托本身是一种引用类型,它保存的也是托管堆中对象的引用,只不过这个引用比较特殊,它是对方法的引用.事件本身也是委托,它是委托组,C#中提供了关键字event来对事件进行特别区分.一旦我们

从.NET中委托写法的演变谈开去(上):委托与匿名方法

在<关于最近面试的一点感想>一文中,Michael同学谈到他在面试时询问对方"delegate在.net framework1.1,2.0,3.5各可以怎么写"这个问题.于是乎,有朋友回复道"请问楼主,茴香豆的茴有几种写法","当代孔乙己",独乐,众乐.看了所有的评论,除了某些朋友认为"的确不该不知道这个问题"之外,似乎没有什么人在明确支持楼主. 不过我支持,为什么?因为我也提过出这样的问题. 这样,我们暂且不提应

最简单的匿名方法与委托示例

 1using System; 2 3namespace ConsoleApplication1 4{ 5    class Program 6    { 7        delegate string delegateTest(string val); 8 9        //被委托调用的方法10        static string Test(string str)11        {           12            str += " 这是传统1.0的方法"