国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

函數(shù)----Beginning Visual C#

2019-11-17 02:48:32
字體:
供稿:網(wǎng)友

函數(shù)----Beginning Visual C#

更多相關(guān)文章,見本人的個人主頁:zhongxiewei.com

當函數(shù)傳遞參數(shù)通過引用方式傳遞的時候,語法有所不同

// in cppvoid doubleVal(int &val) {    // ...}int main() {    int val = 20;    doubleVal(val);    cout << val << endl; // output: 40}
// in c sharpstatic void doubleVal(ref int val) // 使用ref進行標識{    val *= 2;    }static void Main(string[] args){    int val = 20;    doubleVal(ref val);    Console.WriteLine(val); // output: 40}

out 關(guān)鍵字,在c++中沒有相似的關(guān)鍵字或用法 out 關(guān)鍵字的使用方式和ref類似,但有兩點不同,1)在使用ref參數(shù)的時候,傳遞沒有賦值的參數(shù)是不合法的。無法通過編譯。但是在使用out參數(shù)的時候是合法的。2)并且使用out參數(shù)的時候,該參數(shù)被當作沒有賦值的,對該值的調(diào)用會發(fā)生編譯錯誤。如下:

static void doubleVal(out int val){    val *= 2;   // 想要使用val中的數(shù)值,                // 但是val被認為是沒有賦值的,因此出現(xiàn)編譯錯誤 }static void Main(string[] args){    int val=3;    doubleVal(out val);    Console.WriteLine(val); // output: 40}

對于不定量參數(shù)輸入的關(guān)鍵字為:param,具體實現(xiàn)如下:

static int sum(param int[] num) // 這里需要注意的是,param參數(shù)必須在參數(shù)列表的最后的位置{    int sumVal = 0;    foreach (int n in num)    {        sum += n;    }    return sum;}

在c#中對變量作用域的檢測更加的嚴格,比如類似下面的代碼能夠在c++中編譯通過并成功運行,而在c#中則無法通過編譯,由于在同一個作用域中調(diào)用了沒有初始化的變量。

string text;for (int i=0; i<1; i++){    text = "hello";}Console.WriteLine(text); // in cpp: cout << text << endl;

函數(shù)重載和c++中的類似,但是由于c#中對于“引用”,引入了ref關(guān)鍵字,因此,對于引用參數(shù)和非引用的參數(shù)的函數(shù)在c#中也能夠重載,這在c++中是不合理的。如:

// in c#static void showDouble(ref int val) {}static void showDouble(int val) {}// in cpp is errorvoid showDouble(int &val) {}void showDouble(int val) {}

在c#中關(guān)于函數(shù),還有delegate關(guān)鍵字,該關(guān)鍵字的含義用來創(chuàng)建一個能夠用來表示其他函數(shù)的東東。這有點像c中的指針函數(shù)。如:

// in c#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;    process = new processDelegate(Multiply);    Console.WriteLine("{0}", process(3, 4));    process = new processDelegate(Divide);    Console.WriteLine("{0}", process(3, 4));}
// in cpp#include <iostream>using namespace std;int multi(int a, int b) {    return a * b;}int add(int a, int b) {    return a + b;}int main() {    int (*fn)(int,int);        fn = multi;    cout << "multi " << fn(2,3) << endl;    fn = add;    cout << "add " << add(2,3) << endl;}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 靖宇县| 临沧市| 波密县| 吉木萨尔县| 营山县| 扎兰屯市| 大丰市| 安新县| 安乡县| 杨浦区| 兴文县| 定边县| 锡林郭勒盟| 上林县| 合江县| 西林县| 田林县| 博兴县| 寿光市| 获嘉县| 吴江市| 怀来县| 云梦县| 乐平市| 临海市| 新昌县| 外汇| 鹰潭市| 雅安市| 喜德县| 会理县| 田东县| 沅陵县| 犍为县| 济阳县| 鄢陵县| 广安市| 卢龙县| 桐柏县| 华容县| 甘孜|