1.值引數和引用引數:
在不考慮 ref 和 out 修飾的情況下,傳遞值型別的引數就是值引數,引數在方法中的修改不會保留;
傳遞引用型別的引數就是引用引數,引數在方法中的修改都會保留(在不為該引用引數重新賦值或例項化的前提下,引數在方法中的修改才會保留,否則一樣不保留)。
publicactionresult index()
private
void testmethod1(int
i)private
void
testmethod2(testclass tc)
private
void
testmethod3(testclass tc)
class
testclass
}
按值傳遞引數相當於就是把引數複製了乙份傳到方法裡面去,而複製品怎麼改變都不會影響樣品;同樣,按引用傳遞引數後,在方法裡重新例項化也相當於複製。
那麼是不是傳遞值型別引數就不能改變方法外的變數了呢,不是,我們把值引數變成引用引數就可以了。只需要在值型別引數前面加上ref(引用引數)修飾,那麼本該是值引數就會變成引用引數(引數本身還是值型別):
publicactionresult index()
private
void testmethod4(ref
inti)
2.out(輸出引數):
必須在宣告和呼叫中都使用 out 修飾符(ref 也是同樣)。
publicactionresult index()
private
bool testmethod5(out
string msg1, out
string
msg2)
out(輸出引數)適合用在需要 retrun 多個返回值的地方;而 ref(引用引數)則用在需要被呼叫的方法修改呼叫者的引用的時候。
out 和 ref 的區別:
3.params(陣列引數):
publicactionresult index()
;
int b =testmethod6(arr);
return
view();
}private
static
int testmethod6(params
int arr)
4.可選引數:
可選引數是 .net4 中新新增的功能,應用可選引數的方法在被呼叫的時可以選擇性的新增需要的引數,而不需要的引數由引數預設值取代。
publicactionresult index()
private
string testmethod7(int i, string str = "
是失敗"
)
5.命名引數:
命名引數是把引數附上引數名稱,這樣在呼叫方法的時候不必按照原來的引數順序填寫引數,只需要對應好引數的名稱也能完成方法。
publicactionresult index()
private
string testmethod8(int i, string
str)
命名引數如果只是改變引數的順序,這樣的意義並不大,我們沒有必要為了改變順序而去用命名引數,他與可選引數結合才能顯示出他真正的意義。
publicactionresult 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...