C 高階程式設計十二天 函式

2021-07-03 07:12:40 字數 4746 閱讀 9328

類和結構

類和結構實際上都是建立物件的模板 ,

每 個物件都包含資料 

,並 提供了處理和訪問資料的方法。

類定義了類的每個物件 (

稱 為例項 

)可 以包含什麼資料和功能 。 

例如 ,

如 果 一 個類表示 一 個顧客 

,就可以定義字段 

customerid

、 firstname

、 lastnane

和 address,

以 包含該顧客的資訊 。還可以定義處理在這些欄位中儲存的資料的功能 。 接著 

,就 可以例項化表示某個顧客的類的物件 

,為 這個例項設定相關欄位的值 

,並 使用其功能 。

例如有乙個pgonecustomer類

class pgonecustomer

public const string dayofsendingbill=」monday」;

public int customerid;

public string firstname;

public string lastname;

結構struct pgonecustomerstruct

public const string dayofsendingbill=」monday」;

public int customerid;

public string firstname;

public string lastname;

結構與類的區別使他們在記憶體中的儲存方式,

訪問方式

(類是儲存在堆

(heap)

上的引用型別

,而結構的儲存在棧上的值型別

)和他們的一些特徵

(如結構不支援繼承

).較小的資料型別使用結構可提高效能

.但在語法上

,結果和類很相似

.主要區別是使用關鍵字

struct

代替class

來宣告結構

.結構的例項都分布在棧上

,類的例項分布在託管堆上.

類的結構都使用關鍵字ner

來宣告例項

:這個關鍵字穿件物件並對物件進行初始化.

phonecustomer mycustomer=new phonecustomer();

phonecustomerstruct mycustomer2=new phonecustomerstruct();

多數情況下,

類的使用較多

,類中的資料和函式叫做成員

.類還可以包含巢狀的型別

.成員的可訪問性可以是

:public,private,intermal,protected.

資料成員是包含類的資料----欄位,

常量和事件的成員

.資料成員可以是靜態資料

.類成員總是例項成員

,除非用

static

進行顯示的宣告

.一旦例項化

phonecustomer物件,

就可以實用語法

object.ieldname

來訪問這些字段,如

: phonecustomer customer1=new phonecustomer();

customer1.firstname=」syx」;

使用const

關鍵字來宣告常量

.如果宣告為

public,

就可以在類的外部訪問它.

class phonecustomer

public const string daysendingbill = 「monday」;

public int customerid;

public string firstname;

public string lastname;

事件是類的成員,

在發生某些行為

(如改變類的字段火屬性

,或者進行了某種形式的使用者互動操作)時

,他可以讓物件通知呼叫方

.客戶可以包含所謂的」事件處理程式」的**來響應該事件.

函式成員

函式成員提供了操作類中資料的某些功能 ,

包括方法、屬性、建構函式和終結器

,運算子以及索引器.

方法注意,

正式的c#

術語區分函式和方法.在

c#術語中

,」函式成員」不僅包含方法,

而且也包含類或結構的一些費資料成員

,如索引器

,運算子

,建構函式和析構函式等.

1.方法的宣告

[修飾符

] 返回值型別 函式名 

(引數列表)

函式**

2.呼叫方法

例如有乙個方法:

public void showhello(string name)

console.writeline(name+」say : hello」);

呼叫的時候

static void main()

showhello(「zhangsan」);

3.給方法傳遞引數

就是引數列表裡需要什麼型別,

需要幾個就傳遞幾個

4.ref,     out,     params的使用

ref的特點是有進有出,即在傳遞引數之前就已經對它進行賦值,在傳入方法體時,是將該數的位址傳了進來,如果對其進行相應的賦值操作,直接改的是位址裡的值,所以,當該方法執行完,該數的值也就跟著改變了。

**如下:

static void main(string args)

static void ff(ref int i)

如果沒有ref

static void main(string args)

int i = 10;

ff(i);

console.writeline(i);

console.readkey();

static void ff(int i)

i = i + 1;

ref的作用這樣一比較是不是很清楚了

.ref和c

中的指標相似.

而out

與ref

的唯一區別是,在方法接收引數後,對它進行初始化(如果沒有初始化,將會報錯的),其餘的用法都和

ref一樣。

static void main(string args)

static void ff(out int i)

out的使用案例

public static void outfun(out string str)

static void main(string args)

在呼叫含有out

和ref

函式的引數的時候

,呼叫的時候需要顯式的指明

out或者

ref.out

存在的意義

,個人認為是返回多個值.

宣告乙個函式,

在函式結束的時候

,我想得到

i改變後的值

,也想得到

j改變後的值

,就可以使用

out關鍵字

.但是在呼叫的時候

,需要實參前面加上關鍵字

out.

public static int outfun(ref int i,out int j)

i = 10;

j = i+10;

return i;

static void main(string args)

int a = 1;

int b;            

console.writeline(a + "    " + b);            

console.readkey();

ref是有進有出,而

out是只出不進。

為了將方法宣告為可以接受可變數量引數的方法,我們可以使用params

關鍵字來宣告陣列,如下所示:

public static int32add(params int32 values)

int  sum = 0;

for (int32 x = 0; x < values.length; x++)

sum += values[x];

return sum;

只有方法的最後乙個引數才可以標記

params

,該引數必須標識乙個一維陣列,但型別不限。對方法的最後乙個引數傳遞

null或者0

個數目的陣列的引用都是合法的.

在呼叫的時候,

即可以傳遞乙個陣列

,也可以傳遞一組數.例如

: static void main(string args)

int sum = getsum(1, 2, 3, 4, 5, 6, 7, 8);

console.writeline(sum);

int arrs = ;

int sum2 = getsum(arrs);

console.writeline(sum2);

console.readkey();

最後總結一下ref,out,param

存在的意義.

ref:相當於

c中的指標

,讓引數傳址引用.

out:返回多個數.

param:支援可變引數

,但是一定要放在最後

.

第十二天 函式(二)

初級 1.對加減乘除分別封裝乙個函式進行計算,引數是兩個數,返回值是計算結果 defadd a,b 加法 return a b defsubtraction a,b 減法 return a b defmultiplication a,b 乘法 return a b defdivision a,b 除...

學習python的第十二天 函式的高階

2.寫函式,接收乙個引數 此引數型別必須是可迭代物件 將可迭代物件的每個元素以 相連線,形成新的字串,並返回.例如 傳入的可迭代物件為 1,老男孩 武sir 返回的結果為 1 老男孩 武sir def func can if iter in dir can 判斷是否是可迭代的 result for ...

C 基礎第十二天

1。絕對路徑和相對路徑 絕對路徑 通過給定的路徑直接在電腦中找到檔案 相對路徑 檔案相對於應用程式的路徑 在開發中盡量使用相對路徑 2 list和arraylist差不多 list可以把乙個集合轉換為陣列 3.裝箱 拆箱 裝箱 將值型別轉換成引用型別 拆箱 將引用型別轉換成值型別 int n 10 ...