關於ref 和out 的用法---困惑

摘自--MSDN的技術文檔 
[URL]http://www.microsoft.com/china/msdn/library/langtool/vcsharp/Usgettingstartedcsharpforjava.mspx?mfr=true 
 
在  C#  中,所有參數在默認情況下都是通過值傳遞的。要通過引用進行傳遞,我們需要指定關鍵字  ref  或  out  中的一個。這兩個關鍵字的不同之處在於參數的初始化。ref  參數必須在使用前進行初始化,而  out  參數無需在傳遞前進行顯式初始化,並且任何先前的值都會被忽略。 
 
請注意,當方法將引用類型作爲參數使用時,引用本身是通過值傳遞的。然而,引用仍然指向內存中的同一對象,因此對對象的屬性所做的任何改變在方法退出之後將保持不變。但是,因爲引用本身是通過值傳遞的,所以在方法內它應該改爲指向一個不同的對象甚至一個新對象,而一旦方法執行完畢,引用就會恢復爲指向原來的對象,即使原來的對象是未賦值的也同樣如此。 
 
問題(我對下面這幾句話的理解是否正確,請幫我指出不正確觀點)? 
 
1>“在  C#  中,所有參數在默認情況下都是通過值傳遞的。”這句話覺的有毛病   
      
       對象類型就不是值傳遞的。應該是引用傳遞(請告訴我,我的理解是正確,不對的話,應該如何去理解) 
 
2>請注意,當方法將引用類型作爲參數使用時,引用本身是通過值傳遞的。 
 
   這裏的引用本身是指什麼?是內存中存放的引用地址  還是  指傳遞的參數基礎值(如  int類型的) 
 
3>因此對對象的屬性所做的任何改變在方法退出之後將保持不變。 
   是不是對引用的對象的值  進行修改後,就保持修改後的狀態? 
 
4>因爲引用本身是通過值傳遞的,所以在方法內它應該改爲指向一個不同的對象甚至一個新對象,而一旦方法執行完畢,引用就會恢復爲指向原來的對象,即使原來的對象是未賦值的也同樣如此。 
 
這句話,徹底不明白了(請幫我解釋一下)?
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章