最近學到一些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 聚合 乙個物件擁有另乙個物件或對另乙個物件負責 即乙個物件包含另乙個物件或是另乙個物件的...