【讀書筆記】C#本質論第二章
阿新 • • 發佈:2018-06-08
否則 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()
。 using
與using static
指令: 靜態方法的調用通常為:命名空間前綴+類型名,通過using static
+命名空間前綴+類型名來避免重復顯式聲明命名空間前綴+類型名。但其只對靜態方法和屬性有效。
關鍵字:null
與void
null
值只能賦給引用類型,指針類型與可空值類型。- 賦值為
null
的變量已被設置,使其不指向任何位置,而未賦值的變量未被設置,此兩者不能等同。 void
:- 標記方法不返回任何數據
- 表示指針指向未知類型的存儲位置。
隱式類型的局部變量:var
只要在聲明變量的同時用確定類型的表達式初始化它,就可以不必顯式的指定數據類型。
雖然允許使用var
取代顯式的數據類型,但是在數據類型已知的情況下,最好不要使用var
,這是出於可讀性以及正確性的考慮,除非右側的數據類型十分明顯,否則應避免使用var
類型。
- 匿名類型:匿名類型是在方法內部動態聲明的數據類型,而不是顯式的類定義來聲明的。
通過
var
,可以將匿名類型的實例賦給隱式類型的局部變量:以獲得更少數據元素的功能聯合使用。var patent1 = new { Title = "bifocals", YearOfPublication = "1784" };
類型分類
所有類型都可以歸為值類型或引用類型,它們的區別在於復制方式:值類型的數據總是進行值復制,引用類型的數據總是進行引用復制。
值類型
【讀書筆記】C#本質論第二章