2012-04-30 33 views
-3

可能重複:
Use of var keyword in C#爲對象聲明'var'有什麼好處?

  1. 什麼是使用var用於初始化一個對象作爲在下面的代碼的第一行的權益,var sp用於的SerialPort。

  2. 使用它後處理對象有什麼好處?如在下面的代碼中,對象SerialPortSMS已被髮送給收件人之後處理。

代碼:

using (var sp = new SerialPort(cbcomport.Text)) 
{ 
    sp.Open(); 
    sp.WriteLine("AT" + Environment.NewLine); 
    sp.WriteLine("AT+CMGF=1" + Environment.NewLine); 
    sp.WriteLine("AT+CMGS=\"" + dt.Rows[i]["PhoneNo"] + "\"" + Environment.NewLine); 
    sp.WriteLine(tbsms.Text + (char)26); 
    Thread.Sleep(5000); 
} 
+0

感謝Anders Abel編輯 – kashif

+5

這兩個問題在SO上都經過了多次詢問和回答。 –

回答

4

1)隨着var你沒有寫出來的字SerialPort兩次。

如果您正在調用返回可能具有非常複雜的簽名的對象的方法,則使用var絕對有幫助。最常見的情況是linq查詢。

var q = from c in orders 
     order by c.id 
     select c; 

q的類型是IOrderedQueryAble<Order>,我寧願不寫出來。

2)處理完串口後立即關閉串口並釋放,供其他應用程序使用。如果您不處理它,端口將被鎖定,直到GC收集到對象(可能需要一段時間)。

+0

你是什麼意思 – kashif

+0

第二個問題呢? – kashif

+0

@ kashif也回答了。再次閱讀。 – wRAR

4
  1. 使用var輸入更少。

  2. GC可以自由地收集處理後的物體。如果它是非託管資源,則撥打Dispose將清除這些資源。

+0

什麼是非託管資源。是這樣的:一個對象在創建時佔用內存中的空間,並在使用它之後對其進行處理=關閉它以釋放內存或其他東西? – kashif

+0

@ kashif - 並行端口是一個。其他可以是:文件系統,數據庫。基本上,任何不是.NET的代碼或者使用不是.NET的資源(COM對象,端口,總線等等) – Oded

1

在你的情況VAR是兩倍像

SerialPort sp = new SerialPort(cbcomport.Text) 

var sp = new SerialPort(cbcomport.Text) 

兩個以上陳述的不是寫的SerialPort的一個選項是相同的,有些地方

而且就像LINQ,當我們不確定LINQ查詢的結果是什麼時,我們寫var來存儲獲取的結果。

+0

@Oded:感謝您的編輯。 –

相關問題