最近學到一些linq和物件導向的經驗分享

2022-05-09 03:33:07 字數 1527 閱讀 9784

最近學到一些linq和物件導向的經驗分享給大家:

1,如果介面上有資料和集合了,而這些資料實時性很強的話,可以使用linq 或者泛行對記憶體裡面的資料進行處理。可以減少對資料庫的查詢壓力。匿名型別很好用。可以讓你不用建立很多的物件。

sql裡面能做的事情,大多數linq 也能做到。

比如:       

var 申請單列表= (from 別名 in 申請單集合

group 別名 by new

into g

select new

).tolist();

2,我們系統查詢的集合好多是arraylist陣列 ,可以通過如下語句轉換:

list《實體》 實體集合= new list《實體集合》(陣列集合.toarray().cast《實體集合》()).where(p => p.實體屬性.length > 1).tolist《實體》(); 轉換轉換方便查詢。

3,屬性資料量大的地方,盡量加上進度條,不要假死。

4,個性化需求盡量做成開關,可自動配置。下面只列一種新增引數的**:

//是否只能藥房人員(藥師、藥劑師)審核

private bool ispharmaceutistonly = true;

/// 

/// 是否只能藥師、藥劑師審核

/// 

[description( "是否只能藥師、藥劑師審核"),category("設定"),defaultvalue(true)]

public bool ispharmaceutistonly

set}

後面的設定現場寫過**都都知道怎麼配了。就不多說了。

5,重點分享一下:如果乙個介面被很多個類實現了。突然有一天有乙個類需要有乙個特殊功能。怎麼辦呢?如果在這個介面裡面新增乙個方法,會出現要把所有實現此介面的的類做乙個空的實現,改動比較大。

建議新建乙個介面,只讓需要這個功能的類實現這個介面。那麼加上以前的介面。這個類就實現了多個介面了。同時又不需要改到其他的類。

6,第5點實現了介面如何呼叫呢。

有兩種方法,1,通過類的例項化呼叫。

2,通過反射機制呼叫。

這裡需要注意的是:「介面不可以例項化,但是可以通過乙個類來實現介面,如果乙個類被例項化了,不管他是通過什麼方式例項化的(包括反射),那麼他就具備了此類所具備的所有功能特性」。理解了這句話,在呼叫的時候就可以巧妙的應用:

如:a,b,c,d是類, ia,ib,ic,id 是介面;

a繼承ia;b繼承ib,ia;c繼承ic,id,d繼承ic

突然a要新增乙個功能。我新增乙個ie介面,讓a繼承ia,ie。

因為ia的功能很早以前就可以實現的。那麼如果要直接呼叫ie的介面方法。

可以通過如下方式呼叫:

1,假設以前例項化得a賦值給了g

2,可以通過g的型別轉換成ie,這樣就可以訪問ie的方法了。如:

介面ia= g類 as 介面ia;  

介面ie= g類 as 介面ie;  

介面ie.方法();

3,如果你試圖重新例項化ie介面,可能會導致類g被初始化掉。這裡要小心。

最近學到的一些知識

創業的思想 三年至少帶出三名公司的骨幹 知道不等於做到,解決方案 認認真真,踏踏實實,苦練內功,虛心學習,親力親為將一件事做好,拜訪100個客戶,親手發10000個帖子。機會,機會並不是創業中最關鍵的,最關鍵的是有沒有能力把握機會,有沒有資源把握機會,利用自己擅長的去把握機會!理性的判斷機會的利潤 ...

最近學到的一些前端知識

在vue中使用v for不僅可以遍歷陣列,還可以遍歷物件,當然也可以遍歷字串。還有在vue中,不可以深度監聽陣列的變化,比如將陣列arr某一項的值改變,在檢視上不會發生變化,在網上找了很多方法,包括vue.set 原物件,位置,值 以及vue中的變異方法,像push,pop,shift,unshif...

物件導向的一些法則

物件導向的一些法則 法則1 優先使用 物件 組合,而非繼承 組合是一種通過建立乙個組合了其它物件的物件,從而獲得新功能的復用方 法有些時候也稱之為 聚合 aggregation 或 包容 containment 聚合 乙個物件擁有另乙個物件或對另乙個物件負責 即乙個物件包含另乙個物件或是另乙個物件的...