Modern C#系列課程(2):類, 組和名稱空間

================================================================
類的介紹
================================================================
1.爲什麼使用 object-oriented programming?
---封裝性、繼承和多態
---現實世界中就是對象無處不在

2.類(Classes)
---類定義了一個“模板”,通過這個“模板”可以生成一個或多個對象
---類定義了一個對象的“狀態”和“行爲”

3.類的成員
在最簡單的設計中,我們定義兩種類的成員:
---屬性:用於描述“狀態”,保持“狀態”
---方法:用於定義行爲

4.實例化(Instantiation)
---實例化就是創建對象的過程
---使用new關鍵字來創建


補充:實例化的幾種方式【重點】
1.Test mytest = new Test();
2.FileStream fs = File.Create(“data.inp”);
---沒有可訪問的構造函數,Create方法返回類實例的一個引用。
---常見的是sington模式。
3.使用反射(Reflection)
public class ReflectTest
{
 public ReflectTest() { }
}
//Get the Type object for the ReflectTest.class
Type t = Type.GetType(“ReflectTest”)
//Get the parameterless constructor for the class
ConstructorInfo ctor = t.GetConstructor(System.Type.EmptyTypes);
//Invoke the constructor with a ‘null’ parameter
ReflectTest test = (ReflectTest)
ctor.Invoke(null);


================================================================
靜態成員與實例成員
================================================================
1.對象 vs對象引用
對象變量保存的僅僅是對象的一個引用,不是對象本身!
這點是非常重要的!有助於理解.NET


2.何時OOP不再是OOP?
有些設計是和OOP相違背的
---全局變量
---全局方法
---常量


3.靜態(static)類成員
靜態(static)中的成員不屬於任何對象
---它可以通過類名直接訪問
---實例成員必須通過建立對象的引用來訪問
---const申明的其實相當於靜態成員,常量是隱式的靜態成員;也可以用static聲明。
---所有類的實例共享這個類的靜態成員變量。


4.何時來使用static
---常量
---類實例的公共變量
---static可以修飾類,這樣類的所有方法和字段都是static的,這也可以減少編寫的代碼,不需要重複寫static。


補充:只讀字段與常量字段【重點】
public static readonly double Price = 3.72
只讀字段只能一次賦值,賦值之後不能改變,但是賦值的機會很多。
區別:
---靜態方面  //只讀字段: ;常量字段:
---初始化方面  //只讀字段:聲明,類的構造函數,或者根本就沒有賦值 ;常量字段:聲明的時候
---類型方面  //只讀字段: 值類型和引用類型;常量字段:值類型

 

================================================================
名稱空間
================================================================
1.名稱空間可以按邏輯對類進行劃分
---增強可讀性( System.Windows.Forms.Form)
---減少了類名的衝突(my classes &your classes)//如不同人開發相同的類

2.完全引用方式
從名稱空間的最外層完全引用
---優勢 //唯一的應用
---劣勢 //重複代碼多TeamX.BusinessTier.Customer  c;
c = new TeamX.BusinessTier.Customer(...);

3.導入(importing)
你可以導入名稱空間
---使用using關鍵字在文件的頂部導入要使用的名稱空間using TeamX.BusinessTier;
Customer  c;
c = new Customer(...);
問題:如果引入命名空間中存在相同的類時,全局方式就不能正常,爲此我們可以使用折中方案。

4.導入“別名”(alias)
過度使用using將帶來問題
---干擾可讀性 //不知道來源
---增加名稱衝突的可能性
使用alias是一種折中的方式,可以減少代碼編寫,也可以避免命名控件中類的重複。舉例如下:
using BT = TeamX.BusinessTier;
BT.Customer  c;
c = new BT.Customer(...);


================================================================
組件(assembly)
================================================================
1.組件介紹
---A component == 1 or more classes
---在.NET中,組件被稱爲程序集(assembly)
---【組件和存放的物理位置有關,跟名稱空間無直接關係】---和java中的package是不同的,它沒有像java那樣類的文件夾層次結構。

2.引用方式
你有兩種選擇
1)  打開DLL項目
2)  直接引用DLL

3.設置DLL引用
---瀏覽 DLL 引用【.NET選項卡里面,選擇"Browre..."】
---VS 複製 DLL
---如果DLL更新了,重新複製

優勢?
---解決方案中項目量減少,VS運行較快
劣勢?
---你必須手工編譯每個DLL項目
---調試較麻煩,因爲它們不在一個解決方案中…

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章