1樓:匿名使用者
引數一般出現在方法裡面。如:public void get(string str,int age).....
在get後面的括號裡,就是形參,引數可以有很多中,具體情況需要結合實際的需求,去定義有效的引數,如果能幫助到樓主,請採納,萬分感謝~~
2樓:匿名使用者
引數是用來傳遞資料的。以下是是本人學習筆記 不同型別的引數傳遞 如果需要傳遞引數,我門可以傳遞字串、整數型、也可以傳遞類的物件。 1。值方式引數傳遞
在程式中不會修改值型別引數的值. 2.引用型別作為引數傳遞,傳遞方式還是值型別,也就是沒有ref。
雖然我沒有用ref方式傳遞,但是引數是引用型別,當應用變數發生變化時,引數發生了變化,所以我門說,
當類作為引數的時候,引數被修改時,可能修類成員的值. 2.引用方式引數傳遞
如果我門將引數作為引用方式傳遞,也就是用ref修飾引數。
ref方式傳遞引用方式傳遞引用型別和引用方式傳遞值型別,都會儲存方法中的修改. 1.值引數的呼叫
在main函式中宣告瞭一個i,這時候在記憶體的堆疊中就會專門為i開闢出一塊新的記憶體空間存放它,接下來執行了這個方法,它會在堆疊中開闢出另一個區域,並把i的值拷貝過來賦給方法中i的值,方法開始操作,導致方法中i的值加1,而main函式i的值未做任何改變,列印i的值,自然還是0.2.引用引數的呼叫在main函式中宣告j = 0;記憶體的堆疊中就會專門為j開闢出一塊空間存放j,這個時候呼叫了方法,方法把j,作為引數傳遞了進去,由於ref關鍵字的存在,使的這一次傳遞的是記憶體中的指標,方法通過這個指標找到引數i在記憶體中的地址而去操縱它。
main函式中的j和引數中的i指向的都是同一記憶體地址,它們的變數是一樣的,所以當方法引數給i加1,直接導致了j的變化。因為指向的都是同一記憶體地址。在呼叫ref以前必須對引數進行初始化,而不是在方法中進行初始化。
3.輸出引數的呼叫在輸出引數中,必須對引數進行初始化。從clr角度看,關鍵字out和ref是等效的,這就是說,無論使用哪個關鍵字,都會生成相同的後設資料和il**。
c#中,將這2個關鍵字區別對待,這兩個關鍵字區別在於哪個方法負責初始化引用物件。如果方法的引數為out,那麼呼叫者不希望在呼叫方法之前初始化物件,被呼叫的方法必須在返回之前為物件賦值。如果方法的引數標記為ref,那麼呼叫者必須在使用方法之前首先初始化引數的值,被呼叫的方法可以讀取引數或為引數賦值。
3樓:匿名使用者
引數是指向方法(函式)傳遞的資料,一般我們方法在行使功能時需要計算和操作不同的資料,這時可以將這些資料通過引數的形式傳遞給方法進行操作。 引數型別:1、值型別引數2、引用型別引數3、輸出型別引數
c#中 引用引數與輸出引數的功能分別是?有什麼區別?分別在什麼時候使用?
4樓:定復
其實不用想的太複雜,簡單點想
引用引數,ref,比如 public int fun(ref int k);這樣的函式,你想在函式體內修改引數k的值,就這樣用,值型別的話就這樣用吧,如果引數是一個物件,就不用這個ref了,其實意思就是傳地址進去,讓你進行操作
而輸出引數,out,就是可以傳入沒有初始化的引數。ref就是必須初始化的
out可以在內部進行初始化,而且一定要初始化,這個要注意就比如你傳入一個沒有初始化的值型別的資料,就可以用out這樣的方法兩個的區別就是,ref要初始化,另一個不用不過兩個都可以在內部修改他的值
具體什麼時候用,ref主要還是對於值型別
out可以處理一個沒有初始化的陣列,這個比較有用你再看看別人說的,總結下吧
5樓:
out(c# 參考)
更新:2007 年 11 月
out 關鍵字會導致引數通過引用來傳遞。這與 ref 關鍵字類似,不同之處在於 ref 要求變數必須在傳遞之前進行初始化。若要使用 out 引數,方法定義和呼叫方法都必須顯式使用 out 關鍵字。
例如:c# 複製**
class outexample
static void main()
}儘管作為 out 引數傳遞的變數不必在傳遞之前進行初始化,但需要呼叫方法以便在方法返回之前賦值。
ref 和 out 關鍵字在執行時的處理方式不同,但在編譯時的處理方式相同。因此,如果一個方法採用 ref 引數,而另一個方法採用 out 引數,則無法過載這兩個方法。例如,從編譯的角度來看,以下**中的兩個方法是完全相同的,因此將不會編譯以下**:
c# 複製**
class cs0663_example
public void samplemethod(ref int i)
}但是,如果一個方法採用 ref 或 out 引數,而另一個方法不採用這兩類引數,則可以進行過載,如下所示:
c# 複製**
class outoverloadexample
public void samplemethod(out int i)
}屬性不是變數,因此不能作為 out 引數傳遞。
6樓:匿名使用者
ref 是針對基本資料型別,而又想傳引用的做法,我感覺主要用於呼叫非託管**時。其他時候不想用它。
out類似,但編譯器會加以限制,例如:檢查到沒有賦值的out不允許編譯通過。
c#中 引用引數與輸出引數的功能分別是?有什麼區別?分別在什麼時候使用?
7樓:秦倫甘卿
out(c#
參考)更新:2023年11
月out
關鍵字會導致引數通過引用來傳遞。這與
ref關鍵字類似,不同之處在於
ref要求變數必須在傳遞之前進行初始化。若要使用out引數,方法定義和呼叫方法都必須顯式使用out關鍵字。例如:
c#複製**
class
outexample
static
void
main()
}儘管作為
out引數傳遞的變數不必在傳遞之前進行初始化,但需要呼叫方法以便在方法返回之前賦值。
ref和
out關鍵字在執行時的處理方式不同,但在編譯時的處理方式相同。因此,如果一個方法採用
ref引數,而另一個方法採用
out引數,則無法過載這兩個方法。例如,從編譯的角度來看,以下**中的兩個方法是完全相同的,因此將不會編譯以下**:
c#複製**
class
cs0663_example
public
void
samplemethod(ref
inti)
}但是,如果一個方法採用
ref或
out引數,而另一個方法不採用這兩類引數,則可以進行過載,如下所示:
c#複製**
class
outoverloadexample
public
void
samplemethod(out
inti)
}屬性不是變數,因此不能作為
out引數傳遞。
8樓:魚同書昝念
其實不用想的太複雜,簡單點想
引用引數,ref,比如
public
intfun(ref
intk);這樣的函式,你想在函式體內修改引數k的值,就這樣用,值型別的話就這樣用吧,如果引數是一個物件,就不用這個ref了,其實意思就是傳地址進去,讓你進行操作
而輸出引數,out,就是可以傳入沒有初始化的引數。ref就是必須初始化的
out可以在內部進行初始化,而且一定要初始化,這個要注意就比如你傳入一個沒有初始化的值型別的資料,就可以用out這樣的方法兩個的區別就是,ref要初始化,另一個不用不過兩個都可以在內部修改他的值
具體什麼時候用,ref主要還是對於值型別
out可以處理一個沒有初始化的陣列,這個比較有用你再看看別人說的,總結下吧
9樓:龍有福沈胭
沒什麼太大區別。。
一個用關鍵字ref標示,一個用out標示。
牽扯到資料是引用型別還是值型別。
一般用這兩個關鍵字你是想呼叫一個函式將某個值型別的資料通過一個函式後進行更改。傳out定義的引數進去的時候這個引數在函式內部必須初始化。否則是不能進行編譯的。ref和out
都是傳遞資料的地址,正因為傳了地址,才能對源資料進行修改。
一般情況下不加ref或者out的時候,傳值型別的資料進去實際上傳進去的是源資料的一個副本,也就是在記憶體中新開闢了一塊空間,這裡面存的值是與源資料相等的,這也就是為什麼在傳值型別資料的時候你如果不用return是無法修改原值的原因。但是你如果用了ref,或者out,這一切問題都解決了,因為他們傳的是地址。
out比起ref來說,還有一個用法就是可以作為多返回值來用,都知道函式只能有一個返回值,c#裡,如果你想讓一個函式有多個返回值,那麼out能很容易解決。
c 中在類中定義另只有帶引數建構函式的類的物件,編譯通不過
在b中定義 a a 是可以通過的,但在其他地方 比如函式中 這樣是不對的。在b中定義 a a 只是告訴編譯器 b有一個a類的物件 並不在定義的時候建立a這個物件成員,也就不考慮它的建構函式。a這個物件成員的建立是在執行b的建構函式時進行的,b的建構函式後面必須以初始化表的形式為a物件成員提供引數,比...
cpu引數,cpu引數中的t代表什麼?
主頻 指cpu實際工作頻率,常用單位是赫茲 秒。如2.0g就是2000兆赫 秒,數值越大速度越快。外頻 指cpu在一個運算週期內的工作頻率,它與倍頻的乘積就是主頻。現在的cpu外頻多為166或200兆赫。倍頻 指一秒內cpu運算週期的數。奔四3.0e,倍頻15 外頻200兆赫,200 15 3000...
引數方程是什麼意思,直線的引數方程中的t的含義是什麼?t可以為負數嗎?t為負數又是什麼意思?
定義 一般的,在平面直角座標系中,如果曲線上任意一點的座標x,y都是某個變數 t 的函式,即x f t y g t 並且對於 t 的每一個允許值,由上述方程組所確定的點m x,y 都在這條曲線上,那麼上述方程則為這條曲線的引數方程,聯絡x,y的變數 t 叫做變引數,簡稱 引數,相對於引數方程而言,直...