C#高級編程筆記(一)


C#與.net

C#本身是一種語言;.NET Framework是一個平台即一個環境。

只是C#編譯器專門用於.net,所以C#代碼總是使用.net運行。

.net Framework 的核心是運行執行環境(公共語言運行庫CLR、.NET運行庫).

在CLR下運行的代碼稱為托管代碼(mannaged code)

CLR對於源代碼(code)的執行過程:

1..net將code編譯為IL  2. CLR將IL編譯為平台專用代碼

IL:Microsoft中間語言(使用數字代碼)

IL中間語言

特點:

1.面向對象和使用接口

2.值類型和引用類型的顯著差異

3.強數據類型化

4.使用異常來處理錯誤

5.使用特性(attribute)

關鍵詞:CTS:通用類型系統 CLS:公共語言規范 

垃圾回收:一般兩種方式:手動釋放;對象維護計數;

安全性:代碼訪問安全性;

應用程序域(application domain):分離組件的一種方式。(有跨應用程序域邊界對象訪問的方式)

進程:用來孤立代碼的唯一方式。

所有的C#代碼都必須包含在一個類中。

類型推斷(type inference): 使用var關鍵字。編譯器根據變量的初始化值“推斷”變量的類型

變量作用域:

字段和局部變量的作用域沖突:區分名稱相同、作用域相同的兩個標識符:將類級別聲明的變量標識為字段,將方法中聲明的變量看做局部變量,這種情況下變量可以重名(但是在方法中的變量會隱藏類級別的變量),引用類級別的變量可以使用object.fieldname(需區分靜態訪問Object.fieldname與非靜態訪問this.fieldname)

常量(conts)

常量總是靜態的(不必在聲明中使用static);必須在聲明時初始化,而且指定值后不能再改寫;必須能在編譯時用於計算,即不能使用變量值來初始化常量(只讀字段可以這么做);

預定義數據類型

值類型與引用類型

值類型直接存儲其值,引用類型存儲對值的引用(值對象在托管堆上的地址);值類型存儲在堆棧中,引用類型存儲在托管堆上

一般將自己的類型定義為值類型可以把它聲明為結構。

C#有15個預定義類型,其中13個值類型,兩個引用類型(string 和 object)

C#認可的基本類型沒有內置於C#語言中,而是內置於.net framework中。eg:C#中的int 實際上是.net結構中的system.Int32;

意義:在語法上可以把所有的基本數據類型看成是支持某些方法的類。基本類型在概念上用.net結構表示。

eg:int i; string str = i.ToString();//這句中將int類型轉換為string類型沒有性能損失。

預定義值類型:

整型:在強調類型安全時,C#認為byte類型與char類型不同,必須顯示轉換;byte無符號,sbyte有符號;

預定義引用類型:

object類型:C#中的最終父類,所有內置類型以及用戶定義的類型都從它派生。

目的:(1).使用object引用綁定任何子類型的對象。eg:裝箱、反射;

   (2).實現一般用途的基本方法,Equals(),GetHashCode(),GetType(),ToStrng().

string類型:string類型與引用類型的區別。字符串不可改變,修改其中一個字符串,就會創建一個全新的string對象,而另一個不會改變

eg:

1 string str1 = "string1”;
2 string str2 = str1;
3 console.writeline("str1 is {0};str2 is {1}",str1,str2);
4 str1 = "new string1";//改變str1 的值,但此時str2並未改變
5 console.writeline("str1 is {0};str2 is {1}",str1,str2); 

  原因:運算符重載,這里重載了“=”(賦值)運算符。

轉義字符、@的使用。

 

2016年1月7日23:09:36

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM