惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
宝玉的分享
宝玉的分享
Apple Machine Learning Research
Apple Machine Learning Research
阮一峰的网络日志
阮一峰的网络日志
博客园 - 司徒正美
酷 壳 – CoolShell
酷 壳 – CoolShell
IT之家
IT之家
H
Help Net Security
雷峰网
雷峰网
M
MIT News - Artificial intelligence
Microsoft Security Blog
Microsoft Security Blog
美团技术团队
GbyAI
GbyAI
博客园_首页
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
I
InfoQ
小众软件
小众软件
Google DeepMind News
Google DeepMind News
D
Docker
Engineering at Meta
Engineering at Meta
WordPress大学
WordPress大学
博客园 - Franky
Hugging Face - Blog
Hugging Face - Blog

博客园 - 海蓝心

业余时间折腾了个微信小程序版本的街机游戏模拟器(吾爱街机),8090后的童年回忆,欢迎大家体验 Flex Formatter (flex ide 代码格式工具) 安装Android 开发工具 (二) Android 是什么 (一) 个性化印品DIY制作软件《光影21度》(.net客户端与flex通信技术) flash 电子相册 功能强大 在线传输软件 支持断点续传 flex版 个性化数码印刷在线diy 学习XSLT的知识积累 XMLHttpRequest介绍 委托学习笔记二(多播委托) 委托和事件— 一个虚构的故事 ASP.NET程序中常用的三十三种代码(5) ASP.NET程序中常用的三十三种代码(6) ASP.NET程序中常用的三十三种代码(3) ASP.NET程序中常用的三十三种代码(4) ASP.NET程序中常用的三十三种代码(2) ASP.NET程序中常用的三十三种代码(1) C#有关基础知识汇集
委托学习笔记一(调用委托)
海蓝心 · 2005-12-14 · via 博客园 - 海蓝心

C#程序员参考手册
在C#学习当中学习委托的笔记,如有错误地方请指点:
委托是引用类型,可以传递方法或包括在方法的参数列表中,就像其他任何引用类型一样。

用例子来介绍一下:
在这个例子当中,我们将使用委托为通用类库写一个方法。ComputeIt()方法给两个变量v和T的函数的表达式求值。表达式的第一部分是v的函数,对于T的所有值求值都是一样的。表达式的第二部分是T的函数,根据T的值有不同的求值。对于T的低值它应该用一种方式求值,对于T的高值应该用另一种方法求值。
     处理这种情况的一种办法是使用委托定义ComputeIt()的不同版本,

一种计算T的低值

一种计算T的高值

。更紧凑的办法是使用委托定义一个在各种情况下都能使用的通用版本。
     ComputeIt()方法带三个参数:两个对应v和T参数的双精度值,和一个委托实例的引用和委托相关的方法用来计算表达式和T值有关的第二部分。

        public static double ComputeIt(double v,double T,Equation eq)
        
{
            
return (0.5*v*v)+eq(T);
        }

Equation 委托本身定义为带一个double参数并返回一个子double值。

    public delegate double Equation(double x);

下面是调用委托的代码:
第一次委托和LowT()方法相关联。第二次委托和HighT()方法相关联。在两种情况下,调用ComputeIt()方法的语法都是一样的,但该方法的输出结果却不同,因为在该方法内部调用了不同的方法。

public delegate double Equation(double x);
    
class Class1
    
{
        
/// <summary>
        
/// 应用程序的主入口点。
        
/// </summary>

        [STAThread]
        
static void Main(string[] args)
        
{
            
//
            
// TODO: 在此处添加代码以启动应用程序
            
//
            double result;
            Equation eqn;

            
//第一个委托实例
            eqn=new Equation(Class1.LowT);
            result
=Class1.ComputeIt(100.0,4000.0,eqn);
            Console.WriteLine(
"Result is {0}",result);

        
            eqn
=new Equation(Class1.HighT);
            result
=Class1.ComputeIt(100.0,4000.0,eqn);
            Console.WriteLine(
"Result is {0}",result);

            Console.ReadLine();



        }


        
//两个方法
        public static double LowT(double T)
        
{
            
return 1009.0*T;
        }


        
public static double HighT(double T)
        
{
            
return (1009.0*T)+(0.1*T*T);

        }


        
public static double ComputeIt(double v,double T,Equation eq)
        
{
            
return (0.5*v*v)+eq(T);
        }

    }