以前在寫C語言的時候,常常使用到傳值呼叫/傳址呼叫,用的很理所當然~
但是當我看了JAVA的教學文章後,突然發現,怎麼沒有傳值呼叫/傳址呼叫呢?
雖然不常用,但是,想用卻沒得用~可是會很困擾呢!

JAVA已經預設了參數的傳遞方式:
1. int , char , double ..等基本資料型態:都是傳值方式。
2. String:傳值,不論是否使用 new 關鍵字建立物件,都是使用傳值方式,因為字串物件並不能更改字串內容。
3. Array:傳址,物件是用傳址方式。(或是說「傳 位址的值」)


那VB.NET跟C#.NET的傳值/傳址呢?

VB.NET有 ByVal(傳值) 跟 ByRef(傳址),可以讓使用者自定參數是傳值、還是傳址,也算是蠻方便的。

C#中如果沒有指定 ref(傳址) 的話,預設為傳值。C# ref(傳址) 寫法如下:

public void CallRef(ref int a, ref int b) {
...
}
CallRef(ref a, ref b);

 

但遇到傳遞物件呢?(C#跟JAVA是類似的概念)
我自己的習慣寫法如下,可以正常傳遞物件,但不知道是否為正規寫法:

public void CallObject(object obj) {
...
}
CallObject(obj);

arrow
arrow
    全站熱搜

    伊 發表在 痞客邦 留言(1) 人氣()