程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C#基本語法學習(二)

C#基本語法學習(二)

編輯:C#基礎知識

1、面向對象思想有幾個重要的特性:抽象(Abstraction)、封裝(Encapsulation)、繼承(Inheritance)和多態(Polymorphism)。
  抽象就是對復雜的現實生活中的事物性質和行為進行篩選,選擇其中對於將要開發軟件有意義的信息,去掉無用的部分,最終建立起一個只描述現實事物一部分有用信息的軟件對象。
  封裝就是把內部數據和實現細節向使用者隱藏起來。封裝有兩個重要作用。首先,通過封裝,對象對外所暴露的接口信息更加簡單,從而使用者使用對象也更加容易。其次,通過封裝,對象的使用者不知道對象的具體實現細節,從而杜絕了對象

  使用者與對象實現細節之間的緊耦合。
  繼承是指這樣一種能力:它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴展。通過繼承創建的新類稱為“子類”或“派生類”。被繼承的類稱為“基類”、“父類”或“超類”。繼承的過程,就是從一般到特殊的過程。

  C#中只能實現單繼承。
  多態性是允許你將父對象設置成為和一個或更多的他的子對象相等的技術,賦值之後,父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。

2、C#中類的定義如下:
  [訪問修飾符] class 類名
  {
    [變量定義]
    [方法定義]
    [屬性定義]
    ....
  }
  類裡面可以定義變量、方法和屬性。類有一個訪問修飾符,用於描述類的可見性。類裡面還可以定義別的類,在一個類裡面定義的類稱為嵌套類或內部類。在大多數情況下類的修飾符只能是public或internal,

  只有嵌套類的訪問修飾符可以為protected、protected internal或private。
  類也有靜態類和非靜態類之分。靜態類在聲明時前面有一個static關鍵字,靜態類只能包含靜態成員,而且不能創建靜態類的實例。除此之外靜態類與非靜態類是相同的。

3、構造函數是類的一種特殊方法。構造函數在形式和功能上都非常類似一個沒有返回值的方法,總是在對象被創建的時候才執行。在其他地方沒有方式調用。
  構造函數要注意兩點:1、構造函數的名稱必須與類名稱相同,包括大小寫;2、構造函數沒有返回值,而且不允許用void顯示說明沒有返回值。
  當用new關鍵字創建一個類的實例時,構造函數就會被調用。構造函數的主要功能是對類進行必要的初始化。每個非靜態類都必須至少有一個構造函數,這要類的實例才能被創建。
  C#中如果不為類聲明任何構造函數,那麼C#就會自動生成一個方法體為空的默認構造函數,如果聲明了任何構造函數那麼C#不會再自動生成默認的構造函數。

4、對象實例化和使用,語法如下:
  變量名 = new 類名(構造函數參數);

5、C#垃圾回收機制:C#中依靠公共語言運行時(Common Language Runtime,CLR)進行垃圾回收。當可用內存降低到某一阈值時,CLR會自動調用垃圾回收功能,對內存進行整理,回收無用的內存空間。
  在進行垃圾回收時首先要判斷哪些內存仍在使用,哪些內存已經無用了。當聲明一個類的變量並創建這個類的實例時,CLR將會為這個類分配一塊內存區域,當這個變量超出作用域以後,相應的內存區域也就成為了無用的內存區域,

  這種內存區域應該在垃圾回收時被回收以重新使用。CLR通過判斷內存是否可以通過變量引用而決定這塊內存是否仍在使用。CLR將所有的內存引用分為兩種,根引用和非根引用。根引用是指當前活動的局部變量和類的靜態變量,

  非根引用通常是類的一個實例字段。如果一個內存區域能夠直接或間接從一個跟引用訪問到,那麼這個內存區域就扔在使用中,反之就說明引用這塊內存的變量已經超出作用域了,這塊內存就無法訪問了,應該被垃圾回收。

6、析構函數,與構造函數相對應,是在對象被銷毀時執行的函數。C#中類的析構函數名稱是在“~”符號後面跟類的名稱。如類名為Car,那麼析構函數名稱為~Car。
  C#中的析構函數是在對象被垃圾回收器回收之前執行。CLR要對一個對象進行回收時,首先檢查這個對象有沒有析構函數,如果有那麼此次垃圾回收並不會釋放對象的內存,而是把該對象放到析構隊列中。

  CLR會創建一個專門的線程來調用析隊列中的對象的析構函數。當對象的析構函數調用完以後,在下一次垃圾回收時,這個對象占用的內存才真正被回收。
  由於CLR是在內存低到一定程度時才進行垃圾回收,即進行垃圾回收的時間是不確定的,所以C#對象的析構函數執行的時間也是不確定的。不該把釋放資源(如數據庫連接、文件句柄等)放在析構函數中,

  否則這些資源將不能及時得到釋放。釋放資源的正確做法是在類裡面寫一個可被顯示調用的清理資源的方法,然後再使用完對象後調用這個清理資源的方法。.NET Framewor中定義了一個IDisposable接口,

  其中包含一個Dispose方法,實現IDisposable和Dispose方法,是在C#中實現資源回收的一種常見方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved