C#基礎總結
1、在字串前加一個@字元,“”中特殊字元可以不用轉義
2、關鍵字checked和unchecked對錶達式進行溢位檢查
3、foreach迴圈遍歷陣列
4、多維陣列宣告:<baseType>[,,,]<name>; 矩形陣列,不同維度之間用逗號隔開
5、鋸齒陣列(jagged array)宣告如下:int[][] jaggedIntArray;初始化如下:jaggedIntArray=new int[2][]; jaggedIntArray[0]=new int[3]; jaggedIntArray[1]=new int[4];
遍歷時必須迴圈遍歷每個子陣列和陣列本身。
6、引用傳遞引數,使用ref關鍵詞 void functionName(ref Type name) ; out關鍵詞指定輸出引數
7、委託是一種可以吧引用儲存為函式的型別,一般用於事件和事件處理
定義:delegate void ProcessDelegate(double param1);
宣告一個函式 void delegateFunction(double param1){ //實現程式碼 }
呼叫:ProcessDelegate process=new ProcessDelegate(delegateFunction); process(param1);
Predicate 泛型委託
表示定義一組條件並確定指定物件是否符合這些條件的方法。此委託由 Array 和 List 類的幾種方法使用,用於在集合中搜索元素。
public delegate bool Predicate<T>(T obj);
型別引數介紹:
T: 要比較的物件的型別。
obj: 要按照由此委託表示的方法中定義的條件進行比較的物件。
返回值:如果 obj 符合由此委託表示的方法中定義的條件,則為 true;否則為 false。
8、基類可以定義為抽象類,抽象類不能直接例項化;
9、預設情況下,類宣告為內部的,可以使用internal修飾符顯示指定,只有當前專案才可以訪問。public指定的為公共類,其他專案程式碼也可訪問;abstract 抽象類,不能例項化,只能繼承,可以有抽象成員;sealed 密封類,不能繼承,對密封類的例項的虛擬函式可轉換為非虛擬函式來處理。
10、C#類定義中,只能有一個基類,如果繼承了一個抽象類,必須實現繼承的所有抽象成員。編譯器不允許派生類的可訪問性高於基類,即內部類可繼承公共基類,但公共基類不能繼承內部類。C#所有類都繼承於System.Object類。
11、結構型別是值型別(深度複製),而類是引用型別(淺複製、指標)
12、類中屬性可使用訪問器get/set訪問
13、隱藏基類方法,可以在方法前加new關鍵字顯示隱藏:例:new public void func(){}
14、可以使用base關鍵字訪問基類方法
15、比較:
1)型別比較:
(1)GetType()方法或typeof()運算子;
(2)is運算子:檢查物件是否給定型別或是否可以轉換為給定型別,語法如下:<operand> is <type>;
(3)封箱(boxing)和拆箱(unboxing)
面向物件中封箱是指將非物件型別的數值或資料包裝成物件型別;拆箱是指將物件型別轉換為非物件的數值或資料。
C#中封箱是指將值型別轉換為System.Object型別或有值型別實現的介面型別;拆箱與之相反。封箱是隱式轉換,而拆箱需要手動顯示轉換。
例:如下結構型別:
//定義結構體
struct MyStruct{
public int val;
}
MyStruct valType1=new MyStruct(); //定義變數valType1
valType1.val=5; //賦值
Object refType=valType1; //封箱
MyStruct valType2=(MyStruct)refType; //拆箱
也可以把值型別轉換為介面型別,但要實現該介面,舉例如下:
<pre name="code" class="csharp">interface MyInterface{
}
struct MyStruct:MyInterface
{
public int val;
}
MyStruct valType1=new MyStruct();
MyInterface refType=valType1; //封箱
MyStruct valType2=(MyStruct)refType; //拆箱
封箱的作用:
<ol><li>保證項的型別是Object的集合(如ArrayList)中使用值型別;</li><li>有一個內部機制允許在值型別上呼叫Object方法,如int和結構。</li></ol>
2)值比較
16、轉換:as運算子把一種型別轉換為指定的引用型別,不能正常轉換則返回null。語法如下:<operand> as <type>
適用情況:1)<operand>的型別是<type>型別;2)<operand>可隱式轉換為<type>型別 ;3)<operand>可封箱到<type>型別
17、集合
System.Collections名稱空間提供介面
ArrayList:Collection Base類,這個抽象類提供了集合類的許多實現方式,可以繼承該類實現自己的集合類
IList
IDictionary:關鍵字值集合,基類DictionaryBase
迭代器:IEnumerable介面負責使用foreach迴圈,呼叫GetEnumerator()獲取一個IEnumerator引用,e.MoveNext()方法遍歷,e.Current屬性獲取物件的引用