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

推荐订阅源

T
Threatpost
V
Vulnerabilities – Threatpost
TaoSecurity Blog
TaoSecurity Blog
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed
G
GRAHAM CLULEY
S
Securelist
P
Palo Alto Networks Blog
MongoDB | Blog
MongoDB | Blog
A
Arctic Wolf
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
WordPress大学
WordPress大学
Project Zero
Project Zero
T
Threat Research - Cisco Blogs
L
Lohrmann on Cybersecurity
C
Cyber Attacks, Cyber Crime and Cyber Security
F
Fortinet All Blogs
博客园 - 叶小钗
B
Blog RSS Feed
C
Cisco Blogs
Google DeepMind News
Google DeepMind News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
G
Google Developers Blog
K
Kaspersky official blog
D
Docker
Latest news
Latest news
Cisco Talos Blog
Cisco Talos Blog
T
Tor Project blog
Cyberwarzone
Cyberwarzone
Security Latest
Security Latest
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Spread Privacy
Spread Privacy
Microsoft Azure Blog
Microsoft Azure Blog
C
Check Point Blog
J
Java Code Geeks
Simon Willison's Weblog
Simon Willison's Weblog
T
Tenable Blog
Recent Announcements
Recent Announcements
T
Tailwind CSS Blog
H
Help Net Security
L
LINUX DO - 热门话题
T
The Exploit Database - CXSecurity.com
Jina AI
Jina AI
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
NISL@THU
NISL@THU
美团技术团队
腾讯CDC

博客园 - 海蓝心

业余时间折腾了个微信小程序版本的街机游戏模拟器(吾爱街机),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);
        }

    }