1. 程式人生 > >C#基礎總結

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屬性獲取物件的引用