關於 C 方法引數的理解

2022-09-09 05:09:12 字數 2118 閱讀 2920

1.值引數引用引數

在不考慮 ref 和 out 修飾的情況下,傳遞值型別的引數就是值引數,引數在方法中的修改不會保留;

傳遞引用型別的引數就是引用引數,引數在方法中的修改都會保留(在不為該引用引數重新賦值例項化的前提下,引數在方法中的修改才會保留,否則一樣不保留)。

public

actionresult index()

private

void testmethod1(int

i)private

void

testmethod2(testclass tc)

private

void

testmethod3(testclass tc)

class

testclass

}

按值傳遞引數相當於就是把引數複製了乙份傳到方法裡面去,而複製品怎麼改變都不會影響樣品;同樣,按引用傳遞引數後,在方法裡重新例項化也相當於複製。

那麼是不是傳遞值型別引數就不能改變方法外的變數了呢,不是,我們把值引數變成引用引數就可以了。只需要在值型別引數前面加上ref(引用引數)修飾,那麼本該是值引數就會變成引用引數(引數本身還是值型別):

public

actionresult index()

private

void testmethod4(ref

inti)

2.out(輸出引數)

必須在宣告和呼叫中都使用 out 修飾符(ref 也是同樣)。

public

actionresult index()

private

bool testmethod5(out

string msg1, out

string

msg2)

out(輸出引數)適合用在需要 retrun 多個返回值的地方;而 ref(引用引數)則用在需要被呼叫的方法修改呼叫者的引用的時候。

out 和 ref 的區別:

3.params(陣列引數)

public

actionresult index()

;

int b =testmethod6(arr);

return

view();

}private

static

int testmethod6(params

int arr)

4.可選引數

可選引數是 .net4 中新新增的功能,應用可選引數的方法在被呼叫的時可以選擇性的新增需要的引數,而不需要的引數由引數預設值取代。

public

actionresult index()

private

string testmethod7(int i, string str = "

是失敗"

)

5.命名引數

命名引數是把引數附上引數名稱,這樣在呼叫方法的時候不必按照原來的引數順序填寫引數,只需要對應好引數的名稱也能完成方法。

public

actionresult index()

private

string testmethod8(int i, string

str)

命名引數如果只是改變引數的順序,這樣的意義並不大,我們沒有必要為了改變順序而去用命名引數,他與可選引數結合才能顯示出他真正的意義。

public

actionresult index()

private

string testmethod9(int i, string str1 = "

張三執行

", string str2 = "成功"

)

參考:

關於c 可變引數的理解

最近在看cocos2dx的原始碼,發現有很多地方用到了可變引數,就是三個點,然後查了查資料,把自己的思路整理一下,希望能對看到的人有幫助。首先三個點的值傳到了巨集 va args 中 va args 只能在巨集中替換可變引數,下面舉個例子 該例子 於http 具體是那篇我忘了 include inc...

對C 方法引數的理解

對值型別和引用型別的理解 對c 中用new關鍵字例項化物件的理解 在呼叫方法時,將變數儲存的資料複製給方法。具體而言,方法的引數 即形參 在記憶體中有自己的儲存資料的空間,複製的資料被儲存在其空間中。例子 class program public void valueparameter int x,...

關於property引數的理解

之前對於property的引數,一直是弄得雲裡霧裡的,不知道這些引數到底有啥用,最近學了記憶體管理,算是對它有了一點理解,我也來總結一下把。推薦看這篇文章之前先了解一下記憶體管理的基本知識ios記憶體管理初認識 首先,引數分三類 原子性 atomic nonatomic 預設是atomic atom...