2019年2月3日 星期日

C# - var

過年九天是時候來熟悉一下 C#

跟 Java 比較起來語法本身有更多的特性,來擴充原有設計與協助開發者增加開發速度

在變數宣告時可以使用熟悉的 var (雖然跟 js 的 var 長得一模一樣有點開心,但是...)

C# 是很明確的靜態型別的語言

也就是能在編譯時期就知道型別,能夠很開心的提醒開發者型別與其特性

大概也是說這個型別不會一下是個字串、一下又是個自定義的物件

但是,學物件導向自然會手癢(?)想要使用封裝、繼承、多型

當使用的模型越來越複雜,對語言的了解就變得更加重要

說不定寫出來不會是想像得意思

---

切入正題

---

既然 C# 是靜態型別的語言,所以有了 var 之後就變成動態型別了嗎? (Nop~~

var 宣吿只是一個語法上的 Sugar

編譯器會自動幫我們依據等號( = ) 右邊的型態幫我們自動指定型別

所以我們不能做下面兩件事

  • 宣告時不初始化 => 沒有辦法推斷
  • 宣告後重新指定不同型別的值 => 編譯期就指定了,重新指定就等於填了錯誤的型別

  • 都會得到編譯期的錯誤


    但是以下的用法卻可以,因為 object 是所有型別的 base