對C 方法引數的理解

2021-10-01 20:12:00 字數 2422 閱讀 4347

對值型別和引用型別的理解

對c#中用new關鍵字例項化物件的理解

在呼叫方法時,將變數儲存的資料複製給方法。具體而言,方法的引數(即形參)在記憶體中有自己的儲存資料的空間,複製的資料被儲存在其空間中。

【例子】

class program

public void valueparameter(int x,string str,test test)

}class test

【輸出】

【總結】

在呼叫方法時,將變數的引用傳遞給方法。可以認為直接將變數傳給方法,而不是像值引數一樣把副本傳給方法。

【例子】

ps.referenceparameter(ref y,ref str,ref test);

public void referenceparameter(ref int x,ref string str,ref test test)

【輸出】

【總結】

同ref類似,傳遞引用。使用ref時,方法會讀取引數的值並重新賦值;使用out時,方法不會讀取引數的值,只向引數賦值,引數會被認為是初始化的,即使引數有值。

【例子】

ps.outparameter(out y, out str, out test);

public void outparameter(out int x, out string str, out test test)

【輸出】

【總結】

允許在呼叫方法時提供型別相同、數量可變的引數。

【例子】

ps.parameterarray(2,3,"sss","aaa");

ps.parameterarray(34,56,"aaa","987","kkk");

public void parameterarray(int x, int y, params string str)

console.writeline(x + " " + y + " " + str2);

}

【輸出】

【總結】

為引數提供預設值,在呼叫方法時可以不用給某些引數提供實參,即允許在呼叫方法時提供型別不同、數量可變的引數。

【例子】

ps.optionparameter(2);

ps.optionparameter(2,10);

ps.optionparameter(2, 10,"sss");

public void optionparameter(int x, int y = 5, string str = "enternalstar")

【輸出】

【總結】

【命名引數】

之前呼叫方法時必須按照方法中引數的順序給引數賦值,使用命名引數可以不按照這個順序。

【例子】

ps.namedparameter(10,name:"sxd",y:10);

public void namedparameter(int x,int y=5,string str = "enternalstar",string name="aaa")

【輸出】

【總結】

方法有輸入和輸出,一般來說,輸入的數量要多於輸出。在各種不同的應用中,我們可能對輸入和輸出有不同的要求,例如有時我們希望輸入的變數在呼叫方法後不會改變,有時希望能改變;有時我們可以確定要輸入的引數數量,有時我們又不能確定要輸入的引數數量;有時只要有乙個輸出就可以,有時要多個輸出。

c#中提供的幾種引數型別可以滿足我們在各種不同應用中對輸入和輸出的要求。

如果我們希望變數的值在呼叫方法後不會改變,用值型別;

如果我們希望變數的值在呼叫方法後可以改變,一般用ref引數;

如果我們希望有多個返回值,可以用out引數;

如果我們有些引數會根據具體的情況來看用不用得到,那麼可以用params引數;

如果有些引數在很多情況下用乙個值就可以了,重複輸入讓我們感覺麻煩,那麼用可選引數,給引數提供預設值;

如果方法有很多引數,有些引數有預設值,我們想跳過中間的引數,直接給那些靠後的引數賦值,那麼用命名引數。

關於 C 方法引數的理解

1.值引數和引用引數 在不考慮 ref 和 out 修飾的情況下,傳遞值型別的引數就是值引數,引數在方法中的修改不會保留 傳遞引用型別的引數就是引用引數,引數在方法中的修改都會保留 在不為該引用引數重新賦值或例項化的前提下,引數在方法中的修改才會保留,否則一樣不保留 public actionres...

對random state引數的理解

在學習機器學習的過程中,常常遇到random state這個引數,下面來簡單敘述一下它的作用。作用 控制隨機狀態。原因 為什麼需要用到這樣乙個引數random state 隨機狀態 在此先簡單羅列三種情況 1 在構建模型時 forest randomforestclassifier n estima...

對c 方法返回物件的理解

今天更深刻的認識到了通過方法返回乙個物件或者陣列是不可以的,因為c 在方法結束的時候,對物件跟陣列資源已經進行了釋放,所以再使用已經釋放的資源錯誤是未知的,p getp 同樣如果返回的該物件或陣列的指標是不行的,因為資源也被釋放了,指標指向的是已經釋放了的資源 p getp 那麼,要怎麼做呢,可以n...