到目前爲止,咱們介紹了組成C#語言的主要模塊,包括變量、數據類型和程序流語句 ,並簡要介紹了一個只包含Main()方法的完整小例子。但尚未介紹如何把這些內容組合在一塊兒,構成一個完整的程序,其關鍵就在於對類的處理。編程
(一) 類與結構函數
類和結構實際上都是建立對象的模板,每一個對象都包含數據,並提供了處理和訪問數據的方法。類定義了類的每一個對象(稱爲實例)能夠包含什麼數據和功能。例如,若是一個類表示一個顧客,就能夠定義字段CustomerID、 FirstName、LastName和Address, 以包含該顧客的信息。還能夠定義處理在這些字段中存儲的數據的功能。接着,就能夠實例化表示某個顧客的類的對象,爲這個實例設置相關字段的值,並使用其功能。性能
結構與類的區別是它們在內存中的存儲方式、訪問方式(類是存儲在堆(heap)上的引用類型,而結構是存儲在棧(stack)上的值類型)和它們的一些特徵(如:結構不支持繼承)。較小的數據類型使用結構可提升性能。在語法上,結構與類很是類似,主要的區別是使用關鍵字struct代替class來聲明。this
對於類和結構,都使用關鍵字new來聲明實例,這個關鍵字建立對象並對其進行初始化:spa
在大多數狀況下,類要比結構經常使用得多。所以,咱們主要討論類。
(二)類的數據成員與函數成員
數據成員是包含類的數據——字段、常量和事件的成員。數據成員能夠是靜態數據。類成員老是實例成員,除非用static進行顯式的聲明。字段是與類相關的變量。 一旦實例化對象,就可使用語法Object.FieldName來訪問這些字段,例如:
函數成員提供了操做類中數據的某些功能,包括方法、屬性、構造函數和終結器(finalizer)、運算符以及索引器。
(1)方法
方法是與某個類相關的函數,與數據成員同樣,函數成員默認爲實例成員,使用static修飾符能夠把方法定義爲靜態方法。聲明方法代碼以下:
(2)屬性
屬性(property)的概念是: 它是一個方法或一對方法,在客戶端代碼看來,它(們)是一個字段。對象
在 C# 中定義屬性,可使用下面的語法:blog
例如:繼承
在屬性定義中省略set訪問器,就能夠建立只讀屬性。同理,省略get訪問器可建立只寫屬性。索引
(3)構造函數事件
聲明基本構造函數的語法就是聲明一個與包含的類同名的方法 ,但該方法沒有返回類型:
通常狀況下,若是沒有提供任何構造函數,編譯器會在後臺建立一個默認的構造函數。這是一個很是基本的構造函數,它只能把全部的成員字段初始化爲標準的默認值,這一般就足夠了,不然就須要編寫本身的構造函數。
但注意 ,如 果提供了帶參數的構造函數,編譯器就不會自動提供默認的構造函數。
通常使用this關鍵字區分紅員字段和同名的參數。
注意,能夠把構造函數定義爲private 或 protected,這樣不相關的類也不能訪問它們。
而編寫靜態構造函數的一個緣由是,類有一些靜態字段或屬性,須要在第一次使用類以前,從外部源中初始化這些靜態字段和屬性。
(4)匿名類型
前面討論了var關鍵字,它用於表示隱式類型化的變量。var與new關鍵字一塊兒使用時,能夠建立匿名類型。匿名類型只是一個繼承自Object且沒有名稱的類。該類的定義從初始化器中推斷,相似於隱式類型化的變量。例如:
好,關於C#的類和對象就先介紹,相關內容還有不少,就當是拋磚引玉了,只有在實際的運用中才可以學到更多。下一篇博客將重點介紹面向對象的編程方法,即C#中的封裝,繼承與多態。