C# 2.0学习之--匿名代理

翻译 2006年06月23日 18:09:00

 

 

编译与执行:

csc AnonymousDelegates.cs
AnonymousDelegates

 

AnonymousDelegates.cs :

//Copyright (C) Microsoft Corporation.  All rights reserved.

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

namespace AnonymousDelegate_Sample
{

    // Define the delegate method.
    delegate decimal CalculateBonus(decimal sales);

    // Define an Employee type.
    class Employee
    {
        public string name;
        public decimal sales;
        public decimal bonus;
        public CalculateBonus calculation_algorithm;
    }

    class Program
    {

        // This class will define two delegates that perform a calculation.
        // The first will be a named method, the second an anonymous delegate.

        // This is the named method.
        // It defines one possible implementation of the Bonus Calculation algorithm.

        static decimal CalculateStandardBonus(decimal sales)
        {
            return sales / 10;
        }

        static void Main(string[] args)
        {

            // A value used in the calculation of the bonus.
            // Note: This local variable will become a "captured outer variable".
            decimal multiplier = 2;

            // This delegate is defined as a named method.
            CalculateBonus standard_bonus = new CalculateBonus(CalculateStandardBonus);

            // This delegate is anonymous - there is no named method.
            // It defines an alternative bonus calculation algorithm.
            CalculateBonus enhanced_bonus = delegate(decimal sales) { return multiplier * sales / 10; };

            // Declare some Employee objects.
            Employee[] staff = new Employee[5];

            // Populate the array of Employees.
            for (int i = 0; i < 5; i++)
                staff[i] = new Employee();

            // Assign initial values to Employees.
            staff[0].name = "Mr Apple";
            staff[0].sales = 100;
            staff[0].calculation_algorithm = standard_bonus;

            staff[1].name = "Ms Banana";
            staff[1].sales = 200;
            staff[1].calculation_algorithm = standard_bonus;

            staff[2].name = "Mr Cherry";
            staff[2].sales = 300;
            staff[2].calculation_algorithm = standard_bonus;

            staff[3].name = "Mr Date";
            staff[3].sales = 100;
            staff[3].calculation_algorithm = enhanced_bonus;

            staff[4].name = "Ms Elderberry";
            staff[4].sales = 250;
            staff[4].calculation_algorithm = enhanced_bonus;

            // Calculate bonus for all Employees
            foreach (Employee person in staff)
                PerformBonusCalculation(person);

            // Display the details of all Employees
            foreach (Employee person in staff)
                DisplayPersonDetails(person);


        }

        public static void PerformBonusCalculation(Employee person)
        {

            // This method uses the delegate stored in the person object
            // to perform the calculation.
            // Note: This method knows about the multiplier local variable, even though
            // that variable is outside the scope of this method.
            // The multipler varaible is a "captured outer variable".
            person.bonus = person.calculation_algorithm(person.sales);
        }

        public static void DisplayPersonDetails(Employee person)
        {
            Console.WriteLine(person.name);
            Console.WriteLine(person.bonus);
            Console.WriteLine("---------------");
        }
    }
}



 

一键获取免费真实的匿名代理

專 欄 ❈夏洛之枫,从销售转为程序员,Python爬虫爱好者。 github: https://github.com/ShichaoMa/proxy_factory blog: ...
  • BF02jgtRS00XKtCx
  • BF02jgtRS00XKtCx
  • 2017年11月28日 00:00
  • 231

透明,匿名,高匿代理的一些说明

一、没有使用代理服务器的情况: REMOTE_ADDR = 您的 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示 二、使...
  • Time888
  • Time888
  • 2016年09月28日 19:30
  • 1115

C# 多参数线程以及匿名函数

今天早上的时候,要写一个多参数的线程,找到一种,用新建一个对象的方法来参数,其实传入的也是单个参数,只不过传入的是一个对象,只不过对象里有很多属性罢了。后来在stackoverflow上看到这么个答案...
  • fenglifeng1987
  • fenglifeng1987
  • 2014年02月22日 15:37
  • 1815

HttpClient4基础1--通过匿名代理访问网页

http://llying.iteye.com/blog/456455 HttpClient发布4.0了 而且底层完全重写了,据说无论是效率还是结构都有质的飞跃。  现在也要与时具进,研究研究。 ...
  • forlong401
  • forlong401
  • 2014年03月08日 16:26
  • 3085

搭建nghttp2.0作为apns服务的代理的相关问题总结

apple新一代apns推送采用http2.0,升级公司apns服务,决定采用nghttpx作为apns的代理。在搭建这个服务的过程中遇到了两个坑,分享一下我的经验。...
  • KeNanXiuJi
  • KeNanXiuJi
  • 2016年09月19日 19:41
  • 1663

C# Kinect 2.0 SDK 学习笔记(0)——基本情况介绍

去年十一的时候凑热闹买了个国行版的Xbox One,玩了一阵子之后开始对摄像头感兴趣,咬咬牙又买了个Adapter,把Kinect二代摄像头接到了电脑上,上网找了很多资料,官方2.0的SDK已经放出,...
  • ivanyoung66
  • ivanyoung66
  • 2015年07月05日 21:39
  • 2012

c# 匿名函数与委托

在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法。 C# 2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式。 ...
  • han_yankun2009
  • han_yankun2009
  • 2014年05月20日 00:03
  • 9299

关于C#匿名方法

作者  陈嘉栋(慕容小匹夫) 阅读目录 0x00 前言0x01 不必构造委托对象0x02 匿名方法初探0x03 使用匿名方法省略参数0x04 匿名方法和闭包0x05 匿名方法如何捕获外部变...
  • cxihu
  • cxihu
  • 2016年09月02日 15:54
  • 801

C# 关于匿名类型的特性

首先让我们看一个例子, 假设我们并没有Person类, 并且我们关心的属性只有Name和Age. 下面的代码演示了我们如何在没有声明类型的情况下来构建一个对象的:    1: var tom = n...
  • snakorse
  • snakorse
  • 2015年03月10日 09:34
  • 546

[深入学习C#]匿名函数、委托和Lambda表达式

匿名函数  匿名函数(Anonymous Function)是表示“内联”方法定义的表达式。匿名函数本身及其内部没有值或者类型,但是可以转换为兼容的委托或者表达式树类型(了解详情)。匿名函数转换的计算...
  • honantic
  • honantic
  • 2015年06月02日 16:38
  • 7699
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# 2.0学习之--匿名代理
举报原因:
原因补充:

(最多只允许输入30个字)