反射和正則基礎

1、反射
a)經過反射能夠動態地建立對象、賦值或者調用方法。MVC、EF等各類框架都會用到反射,還有VS的智能感知、監視功能也利用了反射。
反射的基礎類爲Type,每一個類對應一個Type對象,每一個方法、屬性分別對應MethodInfo和PropertyInfo對象,這些就是類、方法、屬性的元數據(Meta Data)。
b) 獲取一個類的Type對象有下面幾種方法,可根據場景須要選擇適合的方式:
var p1 = new Person();
//1 經過實例化後的對象獲取
var t1 = p1.GetType();
//2 經過類直接獲取
var t2 = typeof(Person);
//3 經過類所在的程序集獲取
var t3 = Type.GetType(" _6._1_Reflect.Person");

c) Type類的方法不少,這兒學習GetMethod的基本使用,Person類的Hello方法有兩個重載
class Person {
  public void Hello() {
    Console.WriteLine("Hello I'm **");
  }
  public void Hello(string s) {
    Console.WriteLine(s);
  }
}

Type t1 = typeof(Person);
CreateInstance用於建立類的實例
var obj = Activator.CreateInstance(t1);
GetMethod用於取得某個方法,要區分兩個Hello重載,須要在第二個參數中傳入簽名信息以幫助識別,一個string參數時傳入new Type[] { typeof(string)},無參時傳入new Type[0]。
MethodInfo miHello = t1.GetMethod("Hello", new Type[0]);
miHello.Invoke(obj, new object[0]);
MethodInfo miHello1 = t1.GetMethod("Hello", new Type[] { typeof(string)});
miHello1.Invoke(obj, new object[] { "s" });
獲取到方法後,使用Invoke方法來調用,同時能夠傳入參數。

2、正則
正則用於匹配字符串,正則相關的知識博大精深、用途普遍,先把匹配、校驗字符串這樣的用途學會吧。
正則的基本元字符有:
  . 除了\n之外的任意的單個字符
  [0-9] 0-9之間的任意一個數字
  \d 數字
  \D 非數字
  \a 空白
  \S 非空白
  \w 小寫字符和數字、漢字
  \W 特殊符號
  \ 對於.等特殊字符轉義
  () 提高優先級、提取組
  | 或者
  + 出現1到無限次
  * 出現0到無限次
  ? 出現0-1次
  {1,2}一次或兩次,{1,} 最少一次
  ^ 開始
  $ 結束
先了解一點點,下篇繼續學習正則。另外SQL中like語句除了經常使用的%外,還有_,%用於匹配任意多個字符,_則用於匹配一個字符。


學習資料:如鵬網.net提升班http://www.rupeng.com/News/10/4603.shtmlhtml

相關文章
相關標籤/搜索