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

轉載于:https://www.cnblogs.com/pang123hui/archive/2013/01/05/2845595.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376937.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376937.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376937.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

css控制圖片最寬 最高值

.content img{width:expression_r(this.width > 500 && this.height < this.width ? 500:true);max-width:500px;height:expression_r(this.height >500 ? 500:true);max-height:500px; }轉載于:https://www.cnblogs.com/panlin/archive/2013/01/06/2848017…

踩踩踩

http://china.findlaw.cn/laodongfa/ctjg/cy/cybc/ 二、合法裁員經濟補償標準的計算 按照《勞動合同法》第四十七條規定&#xff0c;經濟補償按勞動者在本單位工作的年限&#xff0c;每滿一年支付一個月工資的標準向勞動者支付。六個月以上不滿一年的&#xff0c;按一年計算;不…

c# 字節十六進制轉十進制_用C中的十進制,八進制和十六進制數字初始化字節數組...

c# 字節十六進制轉十進制C中的字節數組 (byte array in C) In C programming language, an unsigned char type can be used to declare byte array in C programming language. An unsigned char can contain a value from 0 to 255, which is the value of a byte. 在C編程語…

從uptime、stress、mpstat、pidstat觀察CPU密集型、IO密集型、進程密集型切換的系統性能

uptime dyydyy-Lenovo-ThinkBook-14-IIL:~$ uptime10:27:10 up 7 min, 1 user, load average: 1.32, 0.99, 0.49結果分別對應&#xff1a;當前時間、系統運行時間、當前用戶數目、過去 1 分鐘、5 分鐘、15 分鐘的平均負載(Load Average) 平均負載是指單位時間內&#xff0c…

解析和創建xml

http://www.cnblogs.com/Li-Cheng/p/3610474.html 轉載于:https://www.cnblogs.com/mxw272618/p/3769900.html

python - VirtualEnv virtualenvwrapper

VirtualEnv 是什么 VirtualEnv用于在一臺機器上創建多個獨立的python運行環境&#xff0c;VirtualEnvWrapper為前者提供了一些便利的命令行上的封裝。 為什么要用 - 隔離項目之間的第三方包依賴&#xff0c;如A項目依賴django1.2.5&#xff0c;B項目依賴django1.3。- 為部署應用…

多臺計算機共享內存_共享內存多處理器和指令執行| 計算機架構

多臺計算機共享內存共享內存多處理器 (Shared Memory Multiprocessor) There are three types of shared memory multiprocessor: 共有三種類型的共享內存多處理器&#xff1a; UMA (Uniform Memory Access) UMA(統一內存訪問) NUMA (Non- uniform Memory Access) NUMA(非統一…

htop與atop

htop htop使用詳解–史上最強 atop Linux atop監控工具部署

js未看的文章

Web前端研發工程師編程能力飛升之路 在瀏覽器的背后&#xff08;一&#xff09; —— HTML語言的詞法解析 組件化的前端開發流程 用js書寫UI組件之js基礎知識 GC與JS內存泄漏 藍色理想之前端開發 w3c JavaScript Puzzlers react AngularJS入門教程 jQuery源碼分析-如何做jQuery…

方法重寫,隱藏在子類父類中的各種調用實踐

一.子類和父類方法之間的關系 1.當子類和父類有方法完全相同的方法 namespace ConsoleApplication2 {class Program{static void Main(string[] args){B b new B();A a new A();A c new B();b.Show();a.Show();c.Show();Console.Read();}}public class A{public void Show()…

向量余弦值python_向量/矩陣的余弦值打印(元素明智的操作) 使用Python的線性代數

向量余弦值pythonPrerequisite: 先決條件&#xff1a; Defining a Vector 定義向量 Defining a Matrix 定義矩陣 Numpy is the library of function that helps to construct or manipulate matrices and vectors. The function numpy.cos(x) is a function used for generati…

centos 6.5網卡dhcp不能獲得網關

環境:vmware centos6.5 添加兩個虛擬網卡。一個自動獲取ip(用于上網-橋接) 一個手動(與主機通信用于ssh-NAT)。 因為自已手動改了一下ifcfg-eth0里面的HWADDR地址。造成 eth0網卡不能識別。多出一個eth2的網卡。 配置eth2網卡&#xff0c;可以自動獲取到ip地址 但用netstat -r…

CPU上下文切換(系統調用、進程上下文、線程上下文、中斷上下文)

CPU寄存器&#xff0c;與程序計數器&#xff08;存儲CPU正在執行的指令位置&#xff0c;或者即將執行的下一條指令的位置&#xff09;共同組成CPU上下文。 CPU上下文切換指的是&#xff1a;把前一個任務的CPU上下文保存起來&#xff0c;然后加載新任務的上下文到這些寄存器和程…

(解決)從同事那里取來的工程不能編譯運行,出現以下錯誤,求幫助

錯誤 6 未能從程序集 C:\Program Files (x86)\MSBuild\Microsoft\Silverlight for Phone\v4.0\Microsoft.Phone.Build.Tasks.dll 加載任務“Microsoft.Phone.Build.Tasks.ValidateWMAppManifest”。 Could not load file or assembly Microsoft.Build.Utilities, Version2.0.0…

編程 小數位數_使用動態編程的n位數的非遞減總數

編程 小數位數Problem statement: 問題陳述&#xff1a; Given the number of digits n, find the count of total non-decreasing numbers with n digits. 給定位數n &#xff0c;找到具有n位數字的非遞減總數。 A number is non-decreasing if every digit (except the fir…

vmstat、sysbench、/proc/interrupts,性能壓測

如何查看系統的上下文切換情況 vmstat 是一個常用的系統性能分析工具,主要用來分析系統的內存使用情況,也常用來分析 CPU 上下文切換和中斷的次數。 # 每隔 5 秒輸出 1 組數據 vmstat 5procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r …

sql查詢中自動統計某項數量

select * from dbo.Vehicle_Maintain_Details A inner join ( select MaintainType as tempTypeName,count(ID) as num from dbo.Vehicle_Maintain_Details group by MaintainType) B on A.MaintainTypeB.tempTypeName轉載于:https://www.cnblogs.com/ryan-wan/archive/2013/0…

一個簡易無鎖池

一個簡易 無鎖池 1.所有讀寫無等待&#xff0c;不需要判斷條件直接讀寫(除自動擴充容量時&#xff09;&#xff0c;效率是一般帶鎖或帶條件判斷池的兩倍以上。 2.預先開辟2的冪大小容量&#xff0c;可自增&#xff0c;每次翻倍 3.僅提供思路&#xff0c;工程應用可靠性還不確定…

在給定約束下可以使用a,b和c形成的字符串數

Problem statement: 問題陳述&#xff1a; Given a length n, count the number of strings of length n that can be made using a, b and c with at-most one b and two cs allowed. 給定長度n &#xff0c;計算可以使用a &#xff0c; b和c且長度最多為b和兩個c的長度為n的…

Robotlegs輕量級AS3框架

Robotlegs是一個用來開發Flash&#xff0c;Flex和AIR應用的純AS3微架構(框架)。Robotlegs專注于將應用程序各層排布在一起并提供它們相互通訊的機制。Robotlegs試圖通過提供一種解決常見開發問題的經過時間檢驗的架構解決方案來加速開發。Robotlegs無意鎖定你到框架&#xff0c…