亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

01-C#入門(函數重載、委托)

2019-11-14 16:43:12
字體:
來源:轉載
供稿:網友
  • 函數的重載

相對委托,是比較好理解的。

涉及一個概念:函數簽名函數簽名包括函數的名稱和參數,而函數重載:就是使用相同的名稱和不同的參數(參數類型、傳遞方式[傳值或引用])來實現的。而不能聲明相同的函數名稱和參數,但是不同的返回類型,這樣做并不是函數重載:因為函數簽名沒有包括其返回類型,所以這樣做實際相當于重復定義函數,肯定會報錯的。

        static int MaxVal(int[] intArrayVal)        {            int maxVal = intArrayVal[0];            for (int i = 0; i < intArrayVal.Length; i++)            {                if (intArrayVal[i] > maxVal)                {                    maxVal = intArrayVal[i];                }            }            return maxVal;        }        static double MaxVal(double[] doubleArrayVal)        {            double maxVal = doubleArrayVal[0];            for (int i = 0; i < doubleArrayVal.Length; i++)            {                if (doubleArrayVal[i] > maxVal)                {                    maxVal = doubleArrayVal[i];                }            }            return maxVal;        }

聲明兩個函數的版本(同名),在使用時,輸入函數名:MaxVal( 即可得到提示信息,可發現參數有兩種,只需要輸入相符類型的參數即可:

            int[] myInt = { 1, 3, 4, 5 };            double[] myDouble = { 3.14, 3.15, 3.22, 3.01, 2.14 };            Console.WriteLine("myInt 最大值是 {0}", MaxVal(myInt));            Console.WriteLine("myDouble max value is: {0}", MaxVal(myDouble));

當然,重載還包括不同的參數類型(比如ref),可實現同一個函數,不同的傳值處理方式(被重載)。

  • 委托

在定義了委托后,就可以聲明該委托類型的變量。接著,把這個變量初始為與委托有相同返回類型和參數列表的函數引用。之后,就可以使用委托變量調用這個函數,就像變量是一個函數一樣??磦€例子吧:

    class PRogram    {        //定義委托:之后可聲明委托類型的變量;        //初始化委托變量:可以初始化該變量為函數的引用,在初始化時需指定對應的函數名;            //對這些函數有個要求:必須是返回類型、參數列表與委托相同的;        //使用委托變量:在使用該委托變量時,用法和函數一樣(包括返回值);        //思考?如果不用委托,判斷用戶輸入,再調用對應的函數,一樣可以達到效果&hellip;…            //錯,重點是:可以把委托變量作為參數傳遞給一個函數,這樣,該函數就可以使用委托調用它引用的任何函數,而且在運行之前無需知道調用的是哪個函數。        delegate double ProcessDelegate(double param1, double param2);        static double Multiply(double param1, double param2)        {            return param1 * param2;        }        static double Divide(double param1, double param2)        {            return param1 / param2;        }        static void Main(string[] args)        {            ProcessDelegate process;            Console.WriteLine("請輸入兩個數,用逗號隔開:");            string input = Console.ReadLine();            int commaPos = input.IndexOf(',');            //聲明初始化兩個double值,從上面獲取的數中轉換,用commaPos來判斷值的內容            double param1 = Convert.ToDouble(input.Substring(0,commaPos));            double param2 = Convert.ToDouble(input.Substring(commaPos + 1, input.Length - commaPos - 1));            Console.WriteLine("輸入 M 執行 相乘 或者輸入 D 執行 相除 操作:");            input = Console.ReadLine();            if (input == "m")                //初始化委托變量,指定委托類型(上面建的ProcessDelegate),并提供一個引用函數的參數,                //這是委托賦值的一種語法,在括號中,指定相應的函數名(不帶括號);                //還有簡單的用法,process = Multiply;                //編譯器會自動匹配委托變量與函數的返回類型和參數,不匹配,應該會報錯;                process = new ProcessDelegate(Multiply);            else                process = new ProcessDelegate(Divide);            Console.WriteLine("根據你的選擇,委托在實例化的時候,調用不同的函數;");            Console.WriteLine("并且,在這一步傳遞對應的參數給委托(委托交給函數),計算的結果:{0}", process(param1, param2));            Console.ReadKey();        }    }

重點是:可以把委托變量作為參數傳遞給一個函數,這樣,這個函數就可以使用委托調用它引用的任何函數,而且在運行之前無需知道調用的是哪個函數。

  • 結語

之前看同事演示過項目中運用到的委托機制,雖然這兒把原理搞清楚了,但是深入的使用仍然很模糊,不過據說要等到13章介紹到與事件處理相關的內容時才更容易理解。

終于把這一篇比較重要的內容看完了,不過,沒有系統化的做出案例,仍然不能說是掌握了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕精品久久| 欧美激情奇米色| 国产拍精品一二三| 国产精品国语对白| 欧美丝袜美女中出在线| 国产精品女人网站| 一区二区三区回区在观看免费视频| 欧美成人四级hd版| 最新国产精品拍自在线播放| 亚洲激情视频在线播放| 日韩性xxxx爱| 成人亚洲激情网| 免费成人高清视频| 欧美日韩国产色视频| 欧美大人香蕉在线| 一本色道久久综合狠狠躁篇怎么玩| 精品国内亚洲在观看18黄| 亚洲色图校园春色| 欧美寡妇偷汉性猛交| 亚洲91精品在线| 91亚洲永久免费精品| 91视频国产精品| 日韩久久免费视频| 国产日韩精品一区二区| 日韩精品免费观看| 精品久久久久久中文字幕| 久久综合色88| 最近2019中文免费高清视频观看www99| 欧美亚洲成人精品| 国产免费一区二区三区香蕉精| 亚洲美女激情视频| y97精品国产97久久久久久| 国产精品一区二区三区久久| 国语自产偷拍精品视频偷| 亚洲精品国产综合久久| 国产精品视频久久| 国产一区二区三区在线播放免费观看| 久久久精品中文字幕| 国产欧美日韩视频| 亚洲综合精品一区二区| 亚洲精品黄网在线观看| 国产69精品久久久久99| 亚洲第一视频网站| 亚洲影视中文字幕| 欧美裸身视频免费观看| 久久久久久久久久婷婷| 91亚洲国产成人精品性色| 欧美—级a级欧美特级ar全黄| 日韩av最新在线| 亚洲激情在线观看| 亚洲奶大毛多的老太婆| 精品美女永久免费视频| 亚洲性线免费观看视频成熟| 国产一区深夜福利| 国语自产精品视频在线看| 中文字幕久热精品视频在线| 精品精品国产国产自在线| 成人久久久久久| 欧美激情aaaa| 97高清免费视频| 国产91在线视频| 国产精品视频精品视频| 日韩亚洲精品电影| 亚洲欧美综合v| 亚洲精品之草原avav久久| 疯狂欧美牲乱大交777| 亚洲人成毛片在线播放| 日韩av成人在线观看| 久久久久久久国产精品视频| 亚洲一区国产精品| 亚洲天堂av网| 亚洲成年人在线播放| 国产精品无码专区在线观看| 欧美成人在线免费视频| 亚洲一区二区三区在线免费观看| 狠狠色香婷婷久久亚洲精品| 欧美高清性猛交| 日韩免费在线免费观看| 亚洲成人久久久久| 亚洲精品乱码久久久久久金桔影视| 国产日韩亚洲欧美| 欧美另类高清videos| 欧美极品美女视频网站在线观看免费| 久久久久久免费精品| 欧美激情视频网站| 国产精品视频地址| 国产视频久久久| 欧美亚洲国产另类| 中日韩美女免费视频网址在线观看| 日韩欧美在线中文字幕| 日韩电影大片中文字幕| 91在线高清免费观看| 97精品欧美一区二区三区| 日韩国产在线看| 亚洲精品丝袜日韩| 66m—66摸成人免费视频| 青青久久av北条麻妃海外网| 韩国精品美女www爽爽爽视频| 日本三级韩国三级久久| 国产激情视频一区| 日韩欧美中文第一页| 欧美激情视频网址| 91爱视频在线| 日韩欧美在线视频日韩欧美在线视频| 欧美大尺度在线观看| 亚洲精品国产福利| 久久久久久久av| 国产精品久久久久久久久久久久久| 亚洲国产日韩精品在线| 亚洲欧美国产va在线影院| 亚洲一区二区三区xxx视频| 在线精品国产欧美| 国产91|九色| 日韩精品中文在线观看| 91爱爱小视频k| 久久伊人色综合| 日韩精品在线免费播放| 国产精品偷伦视频免费观看国产| 亚洲香蕉成视频在线观看| 精品成人69xx.xyz| 日本不卡免费高清视频| 日韩暖暖在线视频| 欧美大人香蕉在线| 日韩欧美大尺度| 欧美日韩国产页| 欧美激情视频在线免费观看 欧美视频免费一| 欧美成人精品一区二区| 欧美激情二区三区| 中文字幕综合一区| 成人免费淫片视频软件| 国产97免费视| 日韩欧美在线视频观看| 欧美肥老妇视频| 亚洲片av在线| 久久艳片www.17c.com| 国产精品高潮呻吟久久av黑人| 久久精品色欧美aⅴ一区二区| 亚洲精品欧美日韩| 国产精品91免费在线| 欧美老少配视频| 亚洲男人天堂久| 亚州国产精品久久久| 亚洲在线观看视频网站| 热久久这里只有| 久久久精品久久久| 亚洲韩国日本中文字幕| 国产欧美最新羞羞视频在线观看| 国产精品美女999| 亚洲综合大片69999| 538国产精品一区二区免费视频| 日韩av免费看网站| 亚洲欧美精品伊人久久| 国产精品视频资源| 91av成人在线| 欧美日韩在线影院| 日韩av片免费在线观看| 久久人人爽人人| 欧美亚洲免费电影| 精品国产成人在线| 国产精品久久国产精品99gif| 国产精品视频资源| 久久综合国产精品台湾中文娱乐网| 国产高清视频一区三区| 亚洲精品98久久久久久中文字幕|