C 引數傳遞方式及使用情境

2022-07-26 01:24:12 字數 1574 閱讀 1953

c#引數傳遞方式及使用情境

一、引數的一般傳遞方式

在c#中,除非使用ref或者out字首,所有引數都通過值來傳遞。變數的棧資料會完整複製到目標引數中。分為以下3種情況:

1、 引用型別的變數只包含物件所在的記憶體位址,將要複製的是記憶體位址而不是物件本身,所以對底層物件的修改會保留。如果在方法內部將記憶體位址指向乙個新物件,則方法結束後在方法中所作的修改會被丟棄(原指標仍指向原物件,方法引數指向新物件,結束後一起銷毀)。

class program

;console.writeline("

初始化為:

"+mye.id);

testmethod(mye);

console.writeline("

退出方法後:

"+mye.id);

console.readline();

}static

void testmethod(employee mye)

;console.writeline("

更改為:

"+mye.id);}}

class employee

}

該程式輸出為

2、 值型別物件包含的是實際資料,傳遞給方法的是資料本身的副本,對值型別物件的修改在方法結束後會被丟棄。

3、 string型別在實際使用中當做值型別對待。

二、引數的特殊傳遞方式

1、ref引數

作用:迫使值引數通過引用傳送給方法。

2、out引數

作用:在引數未初始化的情況下,在乙個函式中輸出多個值。隱含ref。

c#要求變數在被引用前必須初始化。儘管在傳遞前,可以用沒有意義的值初始化他們,然後用ref引用傳遞,但有時會引起混亂。用out可以使引數在未初始化情況下使用,邏輯性更強。

3、params數量可變引數

作用:自動把引數轉為陣列。

呼叫方法有兩種,見示例。

static

string combine(params

string paths)

return result;

}static

void test()

);}

三、傳遞引數注意事項:1、 屬性不是變數,因此不能傳給 out 或ref引數

2、 除非使用out字首,所有引數必須在使用前初始化。

3、 out引數必須在函式結束前賦值,賦值null也可以。

C 引數傳遞方式

在c zhong有三種引數傳遞方式 1.2.3效率依次公升高 1.傳值 int max int x,int y void main main中a,b傳到max裡,單向傳遞,實參到形參,如果要返回,要用到return語句,但只能返回乙個值。int max int x,int y void main 取...

C 函式引數傳遞方式

引數傳遞有三種方式 值傳遞 pass by value 指標傳遞 pass by pointer 引用傳遞 pass by reference 程式測試 include stdafx.h include using namespace std 值傳遞 pass by value void fun1 ...

使用post方式傳遞URL引數

遇上用url方式傳參發現url超長了。只好用post方式傳。函式如下 function post url,params temp.submit return temp 呼叫如下 var params post pm report exportanddownloadpmanalysisinfo.act...