C# 點點滴滴: out和ref

來源:互聯網
上載者:User

  用c#很長一段時間了,不過基本是啥都不會,當C用的,作為寫單片機的,還是真心覺得C比較親切,呵呵。

  不過總是要進步啊,慢慢積累唄,這次是寫一個CAN的上位機模板出來,以後的項目就要徹底告別串口上位機了。

  先說說這個out和ref,就是C語言裡面的指標型函數參數。

// C語言中,傳址傳遞void Test_Function( int * temp ){     *temp = 100;    }

  今天這樣用到C#上,果然悲劇,必須使用ref或out才可以。

  先百度一下區別先:

ref是傳遞參數的地址,out是傳回值,兩者有一定的相同之處,不過也有不同點。

使用ref前必須對變數賦值,out不用。

out的函數會清空變數,即使變數已經賦值也不行,退出函數時所有out引用的變數都要賦值,ref引用的可以修改,也可以不修改。 

  C# 常式:

// C#// outvoid Test_Function_1( out int temp ){      // 這裡temp已經被清空了,即不能這裡直接用temp給別的變數賦值      // 離開函數前temp必須賦值      temp = 100;}// 調用// 可以不需要初始化int temp_1;Test_Funton_1(out temp_1);
// C#// refvoid Test_Function_2( ref int temp ){      // 這裡temp已經在調用之前被初始化過了      // 離開函數前temp可以不修改,也可以修改      temp = 100;}// 調用// 必須初始化int temp_2 = 0;Test_Funton_2(ref temp_2);

------------------------------------------------------------------------------------------

作者:龐輝

出處:http://www.cnblogs.com/pang123hui/

本文基於署名 2.5 中國大陸許可協議發布,歡迎轉載,演繹或用於商業目的,但是必須保留本文的署名龐輝(包含連結).

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.