反射和正則基礎

2022-06-05 20:21:09 字數 1515 閱讀 2828

一、反射

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(string s)

}type t1 = typeof(person);

createinstance用於建立類的例項

var obj = activator.createinstance(t1);

getmethod用於取得某個方法,要區分兩個hello過載,需要在第二個引數中傳入簽名資訊以幫助識別,乙個string引數時傳入new type ,無參時傳入new type[0]。

methodinfo mihello = t1.getmethod("hello", new type[0]);

mihello.invoke(obj, new object[0]);

methodinfo mihello1 = t1.getmethod("hello", new type );

mihello1.invoke(obj, new object );

獲取到方法後,使用invoke方法來呼叫,同時可以傳入引數。

二、正則

正則用於匹配字串,正則相關的知識博大精深、用途廣泛,先把匹配、校驗字串這樣的用途學會吧。

正則的基本元字元有:

. 除了\n以外的任意的單個字元

[0-9] 0-9之間的任意乙個數字

\d 數字

\d 非數字

\a 空白

\s 非空白

\w 小寫字元和數字、漢字

\w 特殊符號

\ 對於.等特殊字元轉義

() 提公升優先順序、提取組

| 或者

+ 出現1到無限次

* 出現0到無限次

? 出現0-1次

一次或兩次, 最少一次

^ 開始

$ 結束

先了解一點點,下篇繼續學習正則。另外sql中like語句除了常用的%外,還有_,%用於匹配任意多個字元,_則用於匹配乙個字元。

學習資料:如鵬網.net提高班

java正則表達和反射

正規表示式 理解 1 正規表示式 就是符合一定規則的字串。2 正規表示式的特殊字元 a 字元 x 字元x 舉例 a,b,c 反斜線字元 t 製表符 u0009 n 新行 換行 符 u000a r 回車符 u000d b 字元類 abc a b 或 c 簡單類 abc 任何字元,除了 a b 或 c ...

python基礎 反射和異常

反射 通俗的說就是你給乙個字串,我就能匹配到和字串相同的函式進行呼叫 反射舉例說明 def bulk self print s is yelling self.name class dog object def init self,name self.name name defeat self,fo...

正規表示式和反射

1 什麼是正規表示式?就是對你想要操作的字串指定操作格式。2 為什麼要用它?簡化對字串的操作。3 如何用它?實際上就是對字串函式裡面傳指定規則的正規表示式。匹配 利用matches 正規表示式 切割 split 正規表示式 替代 replaceall 正規表示式 獲取 1,獲取pattern類例項 ...