8.28開始看劉鐵猛的視頻,到9.22看完。大概以爲本身入門了,對OOP也有必定了解了,稍微寫點筆記,當複習了。面試
數據類型[1]是數據在內存中存儲時的「型號」。不一樣的數據類型有不一樣的「大小」——在內存中佔用的空間,想知道某個數據類型在內存中佔的大小,能夠用函數sizeof
去查看。C#是強類型語言,某個變量一旦被定義,若是不通過強制類型轉換,它的類型永遠不會改變。下面用一段代碼證實:c#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SomeNotes { class Program { static void Main(string[] args) { int a = 100; double b = 200; string c = "Jay"; Console.WriteLine(a.GetType()); Console.WriteLine(b.GetType()); Console.WriteLine(c.GetType()); } } }
結果爲: System.Int32
System.Double
System.String數組
下面試着進行強制類型轉換:ide
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SomeNotes { class Program { static void Main(string[] args) { double a = 12.34; int b = (int)a; decimal c = (decimal)a; Console.WriteLine(b); Console.WriteLine(c); } } }
這個例子裏面double
類型的 a 被強制轉換成了int
類型,而後再把值傳給 b ,輸出結果爲12,小數點後的數字丟失。
各個類型的精度範圍不同,若是用精度更精細的數據類型轉換成精度不高的數據類型,是必定會發生數據丟失的。可是精度低的數據類型轉換爲精度高的數據類型則沒有影響。
好比double
類型的 a 被強制類型轉換成了decimal
類型,而後再把值傳給 c ,輸出結果爲12.34,徹底沒有影響。
在C#中,有五大數據類型:類(class)、結構體(structure)、枚舉(enumeration)、接口(interface)、委託(delegate)。其中類、接口、委託是引用類型(reference type),結構體和枚舉是值類型(value type)。函數
其實剛剛的兩個例子當中就出現變量了,就是 a、b、c。變量實際上表示了存儲位置,而且每一個變量都有一個類型,以決定什麼樣的值可以存入變量。變量一共有7種:靜態變量、實例變量、數組元素、值參數、引用參數、輸出參數、局部變量。其實狹義上的變量指的就是局部變量,由於其餘種類的變量都有本身的約定的名稱,簡單的說,局部變量就是方法體(函數體)裏面聲明的變量。
* 值類型的變量沒有實例,所謂的「實例」與變量合二爲一
* 引用類型的變量裏儲存的數據是對象的內存地址大數據
在C#中變量有它的默認值,好比bool
類型的默認值是false
、double
類型的默認值是 0.0d 等等,這些建議百度本身搜。
變量還有常量類型,指的是值不可被改變的變量。const
和readonly
的不一樣之處在於,const
在聲明的時候就要賦值,readonly
能夠先聲明,後續賦值;相同之處在於,二者一旦被賦值,就不可被更改。ui
Data Type: A data type is a homogeneous collection of values, effectively presented, equippde with a set of operations which manipulate these values. ↩︎spa