以前在寫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);
全站熱搜
留言列表