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