程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 泛型與反射

C# 泛型與反射

編輯:C#入門知識

1.泛型集合:

List Dictionary IQueryabl

2.為什麼不提倡使用ArrayList的原因?

2.1是因為 ArrayList內部存儲數據的是一個 object數組,如果在ArrayList中存儲值類型數據,會出現裝箱和拆箱,從而影響服務器性能。

2.2類型安全問題:因為ArrayList 中所有元素都以object存儲,那麼在取出元素使用時,也是作為 object 類型取出,需要做轉型;如果不轉型,則容易出現類型錯誤!

3.泛型:就是一個類型占位符

3.2泛型方法

3.2.1自定義泛型方法

在泛型方法中,形參、返回值、方法體內部,都可以使用泛型。

3.2.2IEnumerabl內置泛型方法

a.方法Cast()

b.方法ToList()

c.方法 OfType()

3.3帶泛型的類和帶泛型的方法的區別:

泛型占位符使用的范圍不一樣:

泛型方法的泛型占位符只能在方法作用域中使用(形參、返回值、方法體)

帶泛型的類:使用范圍就是整個類的作用域。

反射

1.程序集是什麼:就是源代碼編譯成 IL後的中間代碼文件。

2.當程序執行時,

2.1虛擬機會從硬盤中加載程序集的代碼內容,然後按照代碼的語法解析,獲取信息,並為每個類單獨創建一個Type類的對象,用來存儲類的信息(成員變量、構造函數、方法............)。

復習反射:

Assembly程序集對象,就相當於將程序集文件內容解析後存放在內存裡的位置。

說到底,就是一個程序信息的容器,不能直接作為應用程序運行。如果要把Assembly運行起來,需要使用應用程序域。

1.獲取 Type 對象的方式:

1.1 typeof 關鍵字: Type t1 = typeof(Person);

1.2GetType方法: Type t2 = p1.GetType();//Person p1=new Person();

注意:兩種方式獲取的 Type對象相等,就是同一個(t1==t2)。

2.特性 Attribute

自定義特性類:繼承於 Attribute類;

類名以Attribute結尾;

使用時,可以省略類後面的Attribute。

關於使用反射調用某個對象裡的成員字段和方法:

以前我們是通過對象.字段 和對象.方法的方式來運行;

而用反射可以字段.對象 和方法.對象的方式來運行;

Person p = new Person();

public void InvokePerson(Person pPara)

{

Type pType = typeof(Person);

FieldInfo fInfo = pType.GetField("age");

string strAge = fInfo.GetValue(pPara).ToString();

MethodInfo mInfo = pType.GetMethod("SayHi");

mInfo.Invoke(pPara,null);

}

泛型可空類型:

委托的本質:

就是一個類,繼承於 MulticastDelegate類(多播委托),繼承於 Delegate類(委托)。

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