明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

一周學(xué)會C#(函數(shù)一)

[摘要]一周學(xué)會C#(函數(shù)一)C#才鳥(QQ:249178521)1.前言· C#不支持全局函數(shù) w 所有的函數(shù)必須在類內(nèi)部聲明· 無源文件和頭文件之分 w 所有的函數(shù)必須聲明的時候被實現(xiàn)int NotAllowed() /...
一周學(xué)會C#(函數(shù)一)

C#才鳥(QQ:249178521)

1.前言

· C#不支持全局函數(shù)

w 所有的函數(shù)必須在類內(nèi)部聲明

· 無源文件和頭文件之分

w 所有的函數(shù)必須聲明的時候被實現(xiàn)

int NotAllowed() //錯誤,C#沒有全局函數(shù)

{

...

}

sealed class Methods

{

void Inline()

{ ...

}

void Error()

{ ...

}; //錯誤,函數(shù)不能有結(jié)尾分號

int AlsoError(); //錯誤,函數(shù)必須聲明的時候被實現(xiàn)

}

和Java一樣,C#不允許有全局函數(shù)。所有的函數(shù)必須在類或結(jié)構(gòu)內(nèi)實現(xiàn)。函數(shù)是類或結(jié)構(gòu)的成員,函數(shù)也被稱為方法。

C#允許可以在類的聲明中加入結(jié)尾分號,例如:

sealed class Methods

{

...

};//可以有結(jié)尾分號

但是,C#不允許在函數(shù)的聲明中加入結(jié)尾分號,例如:

sealed class Methods

{

void NotAllowed() {...} ; //錯誤,函數(shù)不能有結(jié)尾分號

}

2.聲明函數(shù)

· 函數(shù)參數(shù)列表

w 各參數(shù)以逗號隔開

w 參數(shù)必須命名

w 沒有參數(shù)時括號不能省略

sealed class Methods

{

void Error(float) //錯誤,參數(shù)沒有命名

{ ...

}

void NoError(float delta)

{ ...

}



int Error(void) //錯誤,無參數(shù)時不允許使用void

{ ...

}

int NoError()

{ ...

}

}

3. 值型參數(shù)

· 一般的函數(shù)參數(shù)是實參的一個拷貝

w 實參必須預(yù)先被賦值

w 實參可以是常量類型

sealed class ParameterPassing

{

static void Method(int parameter)

{

parameter = 42;

}

static void Main()

{

int arg = 0;

Console.Write(arg); //結(jié)果為0

Method(arg);

Console.Write(arg); //結(jié)果為0

}

}

(注:為了敘述的方便,以后所出現(xiàn)的“參數(shù)”這個詞均指函數(shù)參數(shù),也就是所謂的形參)

沒有被ref 或 out修飾的函數(shù)參數(shù)是一個值型參數(shù)。值型參數(shù)只有在該參數(shù)所屬的函數(shù)被調(diào)用的時候才存在,并且用調(diào)用時所傳遞的實參的值來進(jìn)行初始化。當(dāng)函數(shù)調(diào)用結(jié)束時,值型參數(shù)不復(fù)存在。

只有被預(yù)先賦值的實參才能被傳遞給值型參數(shù),例如:

int arg; // arg沒有被賦初值

Method(arg);//錯誤,實參必須預(yù)先賦初值

傳遞給函數(shù)的實參可以是純粹的數(shù)而不是變量,例如:

Method(42);

Method(21 + 21);