c#學習筆記之八 函數的代表delegate的用法:c# 求 三角函數 指數函數 積分__python

來源:互聯網
上載者:User

在實際的開發中,要用到很多的函數。而針對這些函數的一些共性的操作,也可以形成一個函數。因為是共性的操作,所以不需要具體地針對每個函數都定義,而只要一個函數的代表就可以了。比如,求積分操作, 它的方法對所有函數都是適用的。

使用了函數的代表delegate關鍵詞以後,就產生了一個函數代表類。類名是我們自訂的。這個類的聲明形式不同於一般的class classname{}的形式。我想,是因為要和函數的定義形式一致,更直觀地體現這個函數代表類的類型。一個函數的類型包括傳回值類型和參數類型,這就是一個函數的全部類型。都直觀體現在函數代表的聲明中,如下所示:

函數代表類的聲明:

delegate double FuctionDelegate(double x);

使用函數代表類:

FunctionDelegate fd = new FunctionDelegate(FunctionName);//產生一個函數代表對象

熟悉C指標的都知道,FunctionDelegate對象包含的應該是函數的指標。所以在產生函數代表對象的時候,參數不是定義時括弧裡面的參數,而是函數的名字。這樣就把函數的指標傳遞給了fd對象。這是很彆扭的地方,建立類的時候括弧裡的參數竟然和定義時括弧裡的參數不一致。希望C#在以後可以改進。但是,如果你知道FunctionDelegate類在聲明的時候,那個形式,只是為了表明函數的類型,那麼建立的時候的形式,也是可以勉強理解的。當然,傳遞指標的函數的類型要和定義FunctionDelegate時候的函數類型是一致,這自不必說。

下面的代碼就是我使用函數代表類對若干函數求積分,對積分操作函數只定義一次就可以了。

/* * Created by SharpDevelop. * User: Administrator * Date: 2016/11/8 * Time: 11:04 *  * To change this template use Tools | Options | Coding | Edit Standard Headers. */using System;namespace IntegralUseDelegate{delegate double Function(double x);class F            {public static double Quad(Function f,double lower,double upper){double precision;precision = 0.0001;int n;n = Convert.ToInt32( (upper- lower)/precision );double sum;sum = 0;int i;for(i=0;i<n;i++)sum += f( lower + precision*i )*precision;return sum; }                     }class Program  {public static void Main(string[] args){double q1,q2;q1 = F.Quad(Math.Sin,0,Math.PI/2);q2 = F.Quad(Math.Log10,1,1000);Console.WriteLine(q1);Console.WriteLine(q2);Console.Write("Press any key to continue . . . ");Console.ReadKey(true); }     }}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.