1. 程式人生 > >【讀書筆記】C#本質論第二章

【讀書筆記】C#本質論第二章

否則 TE 引用 字節 字符類 oid 情況 情況下 pat

C#本質論第二章。

基本數據類型

C#的基本數據類型包括整型,浮點類型以及decimal的特殊浮點類型。

整數類型

  • C#的所有基本類型都有短名稱和完整名稱,完整名稱對應於基類庫(Base Class Library)中的類型命名。
  • C#的整數類型共有8種:sbyte byte short ushort int uint long ulong ,其中對應的數據類型所占的大小分別為 8位 16位 32位 64位。對應的範圍為2的相應次方個數,具體表示為負2的n-1次方2的n-1次方

浮點類型

  • 二進制浮點類型無法精確的表示某個數,除非用分數表示時,其分母為2的整數次冪。
  • C#的浮點類型有兩種:float

    double,對應的數據類型為32位64位

    //TODO 具體的表示範圍原理待考。
  • 十進制浮點類型:C#提供了128位精度的十進制浮點類型decimal,適合大而精確的計算,它保證範圍內的所有十進制數都是精確的。

字面量(literal value)

就是字面值,一種常量,編譯器會自動的將其轉換成基本數據類型。另外C#編譯器允許向非int數值類型賦值,前提是其值對於目標數據類型是合法的,但這只對字面量成立

  • 解析順序:解析成能夠存儲該值的第一種數據類型。
    • 沒有後綴的數值字面量:int uint long ulong
    • 具有後綴U的數值字面量: uint ulong
    • 具有後綴L的數值字面量: long
      ulong
    • 具有LU或UL後綴的數值字面量: ulong

布爾類型以及字符類型

  • 布爾類型:條件類型,大小為一個字節。
  • 字符類型:char表示16位字符,取值範圍與ushort相同,但是char是一種獨特類型。

字符串

零或多個字符組成的有限序列稱為字符串。

  • 在字符串前面使用@可以指明轉義序列不被處理,結果是一個逐字字符串字面量(verbatim string literal),不僅將反斜杠當做普通字符處理,還會逐字解釋空白字符。
  • 字符串插值:在一個字符串字面量前加上一個$符號前綴,然後將表達式嵌入大括號中,這樣做用於支持插入表達式。
    System.Console.WriteLine($"Your full name is {firstname} {lastname}")
    事實上這樣寫調用了string.Format()
  • usingusing static指令: 靜態方法的調用通常為:命名空間前綴+類型名,通過using static+命名空間前綴+類型名來避免重復顯式聲明命名空間前綴+類型名。但其只對靜態方法和屬性有效。

關鍵字:nullvoid

  • null值只能賦給引用類型,指針類型與可空值類型
  • 賦值為null的變量已被設置,使其不指向任何位置,而未賦值的變量未被設置,此兩者不能等同。
  • void
    1. 標記方法不返回任何數據
    2. 表示指針指向未知類型的存儲位置。

隱式類型的局部變量:var

只要在聲明變量的同時用確定類型的表達式初始化它,就可以不必顯式的指定數據類型。
雖然允許使用var取代顯式的數據類型,但是在數據類型已知的情況下,最好不要使用var,這是出於可讀性以及正確性的考慮,除非右側的數據類型十分明顯,否則應避免使用var類型。

  • 匿名類型:匿名類型是在方法內部動態聲明的數據類型,而不是顯式的類定義來聲明的。
  • 通過var,可以將匿名類型的實例賦給隱式類型的局部變量:以獲得更少數據元素的功能聯合使用。

    var patent1 =
        new { Title = "bifocals",
        YearOfPublication = "1784" };

類型分類

所有類型都可以歸為值類型或引用類型,它們的區別在於復制方式:值類型的數據總是進行值復制,引用類型的數據總是進行引用復制。

值類型

【讀書筆記】C#本質論第二章