C# 点点滴滴: out和ref
用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 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名庞辉(包含链接).