一、C# 概述,
1、托管執行環境
2、程序集
3、關鍵字:C#保留字
4、除了C#定義的關鍵字之外,開發者可以提供他們自己的名稱,編程語言將這些名稱稱為標識符
5、如果關鍵字包含一個"@"前綴,那麼也可作為標識符使用,例如,可將一個局部變量命名為
@return
6、變量:
變量是一個內存當中存儲位置的符號名稱,程序以後可以對這個存儲位置進行賦值和修改操作,
聲明一個變量就是定義它,需要:1、變量要引用的數據的類型 2、指派一個標識符(變量名)
操作值類型的變量,相當於對內存的直接尋址,變量就是申請一段內存的並為其取一個別名。
7、數據類型
數據類型,或者簡稱類型,是對具有相似特征和行為的個體的一個分類。
在編程語言中,類型是被賦予了相似特性的一些個體的一個定義
8、聲明一個局部變量之後,必須在引用它之前為它賦一個值,賦值的結果是能用變量標識符來引用存儲在內存當中的值。
9、字符串是不可變的
所有string類型的數據,不管是不是字符串字面量(直接量),都是不可變的(或者說是不可修改的)。
也就是可以將存儲這個字符串值的內存首地址賦值給一個string類型的變量,但是不可以改變這段內存存儲的值,這個值是固定的,如果想要改變這個string類型變量的值,只能重新申請一段內存,存儲一個新的字符串,然後將新的引用(內存首地址)賦值給這個string類型變量。
也就是說:你不能修改變量最初引用的數據,只能重新對變量進行賦值,讓它指向內存中的一個新位置。
10、格式化字符串
11、托管執行和公共語言基礎結構
處理器不能直接解釋一個程序集。程序集采用的是另一種語言(非C#),即公共中間語言
(Common Intermediate Language, CIL),或者簡稱為中間語言(IL) MSIL(Microsoft IL)
C#編譯器只是將C#源代碼文件轉換成這種中間語言。為了將CIL代碼轉換成處理器能夠理解的機器碼,
還要執行一個額外的步驟(該步驟通常是在執行時完成)。這個步驟涉及到C#程序執行中的一個重要
元素:VES(Virtual Execution System,虛擬執行系統)。VES偶爾也被稱為運行時。
它根據需要來編譯CIL代碼,這個過程為即時編譯或者JIT編譯(just-in-time compilation)。
假如代碼在像"運行時"這樣的一個"代理"的上下文中執行,就將這些代碼稱為托管代碼(managed code),
而在運行時的控件下執行的過程稱為托管執行(managed execution)。
之所以叫托管代碼,是因為"運行時"管理著諸如內存分配、安全性和JIT編譯等方面,從而控件了主要的
程序行為。執行過程中不需要“運行時”的代碼稱為非托管代碼(unmanaged code)。
運行時,這個術語既可能指“程序執行的時候”,也可能指“虛擬執行系統”。
一般用執行時表示程序執行時,用運行時來表示負責管理C#程序執行的代理。
VES規范被包含在一具包容面更廣的規范中,即CLI(Common Language Infrastructure,公共語言
基礎結構)規范,作為一個國際性標准,CLI包含了以下幾方面的規范。
1、VES或“運行時”
2、CIL
3、為語言互操作性提供支持的一個類型系統,稱為CTS (Common Type System,公共類型系統)。
4、如何編寫能通過各種CLI兼容語言訪問的庫的指導規則,這部分內容具體放在公共語言規范
(Common Language Specification , CLS)中
5、使各種服務能被CLI(包括程序集的布局或文件格式規范)識別的無數據。
6、一個公共編程框架,稱為基類庫(Base Class Library,BCL),所有語言的開發者都能利用它。
假如在一個CLI實現的上下文中行動 ,那麼程序員不需要直接編寫代碼,就能使用大量服務和特性,包括如下方面:
1、語言互操作性
2、類型安全
3、代碼訪問安全性
4、垃圾回收
5、平台可移植性
6、BCL,提供開發者能夠依賴的一個大型代碼庫。
1.8、CIL和ILDASM
使用ILDASM 對一個程序集(.dll .exe) 進行反匯編生成對應的CIL