用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# // out void Test_Function_1( out int temp ) {// 這里temp已經被清空了,即不能這里直接用temp給別的變量賦值// 離開函數前temp必須賦值temp = 100; }// 調用 // 可以不需要初始化 int temp_1; Test_Funton_1(out temp_1);
// C# // ref void 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 中國大陸許可協議發布,歡迎轉載,演繹或用于商業目的,但是必須保留本文的署名龐輝(包含鏈接).