iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0
Software Development

如果可以,我想用30天的時間打造一間抵霸閣系列 第 25

[Day25]抵霸閣- C# 到底該不該交給編譯器來定義型別呢(var)

  • 分享至 

  • xImage
  •  

顯式型別 (Explicitly Typed):在宣告變數時明確地給予型別
隱含型別 (Implicitly Typed):用var這個關鍵字來宣告變數的型別

var使用時機
建立一個暫存的型別(匿名型別)
就不用再另外建立一個類別來存放資料
像是 ArrayList,DataTable,DataRow
可以先用new來把物件實體化
接著將var賦予值(也就是方才實體化的物件)
編譯時就會由編譯器去決定匿名的型別是什麼
(var 其實是靜態繫結的變數 像先前介紹的static一樣 )
都會在程式執行前就先確定好 執行期間就不會變動分配的記憶體)
另外像是LINQ的回傳值也可以用var來接來當作下個函數的參數
(因為LINQ是一種強型別的資料庫查詢語言
在回傳的資料型態無法確認之情況下
用var就可以省去自建型別的麻煩)

注意事項

  • 當宣告一個陣列為var型別時
    陣列內的元素就都要是相同的型別
    (像是不能同時有 520[int],"我愛你"[string]兩種型別存在)
  • 再來是只能用在區域變數
    function傳入的參數也不能用var宣告
  • 而在宣告var的變數時 一次只能宣告一個
  • 一定要給初始值(畢竟是靜態的)
  • 用顯式型別或是隱含型別耗費的效能是相同的
  • 在值域要明確的情況下不適合用隱含型別(像是int/double可能就會誤判)

小結
其實選擇用顯式型別或是隱含型別主要還是依情況來做判斷
或許當型別名稱太長時改用var可以讓程式更簡潔
但如果全部都用var就很難一眼看出此變數的型別
(開發期間倒還好 強大的Visual Studio可以讓你把游標移到變數上將其型別的資訊一覽無遺)
主要還是可讀性或是公司偏好來選擇用哪個


上一篇
[Day24]抵霸閣-程式碼的「斷捨離」
下一篇
[Day26]抵霸閣-軟體開發實用工具推薦(無料)
系列文
如果可以,我想用30天的時間打造一間抵霸閣30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言