不断学习,持续更新
面向?qū)ο蟪绦蛟O(shè)計(jì) public:同一程序集中的任何其他代碼或引用該程序集的其他程序集都可以訪問該類型的成員。 protected:只有同一類或結(jié)構(gòu)或者此類的派生類中的代碼可以訪問的類型成員。 private:只有同一類或結(jié)構(gòu)中的代碼可以訪問該類型或成員。 interval:同一程序集中的任何代碼都可以訪問該類型的成員,但其他程序集中的代碼不可以訪問。 params:表示參數(shù)是可變個(gè)數(shù)的。在方法聲明中的params關(guān)鍵字之后不允許任何參數(shù),并且在方法聲明中只允許一個(gè)params關(guān)鍵字。 (1)若形參表中含一個(gè)參數(shù)數(shù)組,則該參數(shù)數(shù)組必須位于形參列表的最后。 (2)參數(shù)數(shù)組必須是一維數(shù)組。 (3)不允許params與ref和out組合使用。 (4)與參數(shù)數(shù)組對(duì)應(yīng)的實(shí)參可以是同一類型的數(shù)組名,也可以是任意多個(gè)屬于同一類型變量的該數(shù)組的元素。 (5)若實(shí)參是數(shù)組按引用傳遞,若實(shí)參是變量或表達(dá)式按值傳遞。 static: (1)類的靜態(tài)成員屬于類所有,非靜態(tài)成員屬于類的實(shí)例所有。 (2)每創(chuàng)建一個(gè)類的實(shí)例,都會(huì)在內(nèi)存中為其分配一塊存儲(chǔ)區(qū)。 (3)靜態(tài)成員存儲(chǔ)在全局?jǐn)?shù)據(jù)區(qū)。 (4)static成員方法或成員變量在類未實(shí)例化前即可使用。 (5)非靜態(tài)方法可訪問類中任何成員,靜態(tài)方法只能訪問靜態(tài)成員。
MVC 1、目錄結(jié)構(gòu) App_Data:數(shù)據(jù)庫(kù)文件 Content:靜態(tài)文件(樣式文件、圖片等) Models:模型組件 View:視圖組件 Controllers:控制器組件 Shared:視圖組件中的公用部分。該目錄不屬于單個(gè)控制器,而是屬于所有控制器。存放母版頁(yè)等。 每個(gè)控制器,在View文件夾中都有一個(gè)與控制器名稱相對(duì)應(yīng)的目錄。例如有HomeController則Views文件夾中就要?jiǎng)?chuàng)建一個(gè)Home的目錄,這樣HomeController加載相關(guān)視圖時(shí),就自動(dòng)尋找Views/Home目錄下的頁(yè)面。 2、控制器給視圖傳遞數(shù)據(jù) (1)ViewData:只能在一個(gè)動(dòng)作方法中設(shè)置,在相關(guān)的視圖頁(yè)面中讀取,只對(duì)當(dāng)前的視圖頁(yè)面有效。 (2)TempData:可在多個(gè)動(dòng)作方法中或多個(gè)頁(yè)面中設(shè)置,讀取。 (3)Model (4)傳遞多個(gè)數(shù)據(jù)對(duì)象:定義一個(gè)類,將多個(gè)數(shù)據(jù)對(duì)象放到這個(gè)類中。 3、視圖給控制器傳遞數(shù)據(jù) (1)Request.Form (2)FormCollection (3)Request 4、過濾器Filters:被用于整個(gè)應(yīng)用程序而不適合放置于某個(gè)局部位置。 Filters功能: (1)判斷登錄與否或用戶權(quán)限 (2)決策輸出緩存 (3)防盜鏈 (4)防蜘蛛 (5)本地化與國(guó)際化設(shè)置 (6)實(shí)現(xiàn)動(dòng)態(tài)action Filter要繼承于ActionFilterAttribute抽象類 定義: public class TestFilter:ActionFilterAttribute { ? public override void OnActionExecuting(ActionExectingContext filterContext) ? { ? ? filterContext.HttpContext.Session["temp"]="1"; ? } } 使用: [TestFilter] public ActionResult FilterAction() { ? //代碼 }
5、多個(gè)按鈕提交表單實(shí)現(xiàn) (1)<input type="submit" value="審核" οnclick="this.form.action=\"<%=Url.Action(\"Action1\")%>\";"/> 點(diǎn)擊按鈕改變form的action屬性 (2)在Action中判斷通過哪個(gè)按鈕提交 <input type="submit" value="審核" name="action"/> public ActionResult Index(string action) { ? if(action=="審核") ? { ? ? } ? else ? { ? } } (3)使用ActionSelector public class MultiButtonAttribute:ActionNameSElectorAttribute { ? public string Name{get;set;} ? public MultiButtonAttribute(string name) ? { ? ? this.Name=name; ? } ? public override bool IsValidName(ControllerContext c,string actionName,System.Reflection.MethodInfo methodInfo) ? { ? ? if(string.IsNullOrEmpty(this.Name)) ? ? { ? ? ? return false; ? ? } ? ? else ? ? { ? ? ? return c.HttpContext.Request.Form.AllKeys.Contains(Name); ? ? } ? } } [MultiButton("action1")] public ActionResult Action1() { ? return View(); } [MultiButton("action2")] public ActionResult Action2() { ? return View(); } 6、RenderBody、RenderPage、RenderSection (1)RenderBody:在模板頁(yè)中,@RenderBody()所占位置就是要填充的內(nèi)容的位置。 (2)RenderPage:調(diào)用局部頁(yè)面的加入。? (3)RenderSection:在母版頁(yè)中占個(gè)位,讓使用此母版的子頁(yè)自己去呈現(xiàn)它們的Section。
HTML和CSS 1、高性能HTML代碼 (1)CSS文件在前,JS文件在后,JavaScript代碼放到頁(yè)面底部。script標(biāo)簽兩個(gè)屬性async和defer。defer設(shè)為true則此文件滯后執(zhí)行,不影響頁(yè)面HTML渲染,async設(shè)為true則文件異步加載和執(zhí)行。 2、CSS標(biāo)準(zhǔn) (1)盡可能不用標(biāo)簽類型選擇器;少用ID選擇器。 (2)屬性值為0后面單位可省略。url值兩端引號(hào)可以省略。
Linq from ? ?指定查詢操作的數(shù)據(jù)源和范圍變量 select ?指定查詢結(jié)果的類型和表現(xiàn)形式 group ? 對(duì)查詢結(jié)果進(jìn)行分組 where ?篩選元素的邏輯條件,一般由邏輯運(yùn)算符組成 orderby對(duì)查詢結(jié)果進(jìn)行排序 join ? ? 連接多個(gè)查詢操作的數(shù)據(jù)源 let ? ? ? 引入一個(gè)用于存儲(chǔ)查詢表達(dá)式中的子表達(dá)式結(jié)果的范圍 into ? ? ?提供一個(gè)臨時(shí)的標(biāo)識(shí)符。該標(biāo)識(shí)可以引用join、group和select子句的結(jié)果
LINQ to Objects可以查詢、檢索、排序、聚合、分區(qū)、關(guān)聯(lián)IEnumerable或IEnumerable<T>集合,也就是說可以操作任何可枚舉的集合。?
例1:定義一個(gè)字符串?dāng)?shù)組,查找數(shù)組中長(zhǎng)度小于7的所有項(xiàng)。 string[] strName=new string[]; IEnumerable <string> selectQuery= ? from Name in strName ? where Name.Length<7 ? select Name; 例2: from info in tb_Employee select new { ? 員工編號(hào)=info.ID, ? 員工姓名=info.Name, ? 性別=info.Sex }; 例3: from info in tb_Employee where info.ID="223" select new { ? 員工編號(hào)=info.ID, ? 員工姓名=info.Name, ? 性別=info.Sex };例4:?
int[] values={1,2,3,4,5,6,7,8,9,0};?
var value=from v in values ?
? ? ? ? ? ? ? ? ? ? ? ?where v%2==0?
? ? ? ? ? ? ? ? ? ? ? ?select v;?
foreach(var v in value)?
{?
? ? Response.Write(v.ToString()+",");
}?
例5:?
ArrayList dynamicArr=new ArrayList();?
dynamicArr.Add("ooo");?
dynamicArr.Add("pppp");?
dynamicArr.Add("qqqqq");?
var query=from item in dynamicArr.ToArray()?
? ? ? ? ? ? ? ? ? ? ? ?where item.ToString().Length>3?
? ? ? ? ? ? ? ? ? ? ? ?select item;?
foreach(var item in query)?
{?
? ? Response.Write(item+",");?
}?
例6:?
Dictionary<int,UserInfo> users=new Dictionary<int,UserInfo>();?
users.Add(3,new UserInfo(1,"User01","01"));?
users.Add(2,new UserInfo(2,"User02","02"));?
users.Add(1,new UserInfo(3,"User03","03"));?
var query=from item in users?
? ? ? ? ? ? ? ? ? ? ? ?orderby item.Key?
? ? ? ? ? ? ? ? ? ? ? ?select item;?
foreach(var item in query)?
{?
? ? Response.Write(string.Format("({0},{1})", item.Key,item.Value.UserName));
? ? Response.Write("<br/>");?
}?
C#編碼規(guī)范 1、數(shù)據(jù)類型簡(jiǎn)寫規(guī)則 整型 ? ? ?int ? ? ? ? ? ? ? 長(zhǎng)整形 ? ? ? ? lint 字符串 ? ?str ? ? ? ? ? ? ? 單精度浮點(diǎn)型 ? flt 布爾型 ? ?bl ? ? ? ? ? ? ? ?雙精度浮點(diǎn)型 ? dbl 短整形 ? ?sint ? ? ? ? ? ? ?字節(jié)型 ? ? ? ? bt 2、變量及對(duì)象名稱命名規(guī)則 模塊級(jí)變量 ? ? ? ? M_數(shù)據(jù)類型簡(jiǎn)寫_變量名 全局變量 ? ? ? ? ? G_變量名 局部變量 ? ? ? ? ? P_變量名 模塊級(jí)常量 ? ? ? ? Mc_常量名 全局常量 ? ? ? ? ? Gc_常量名 過程級(jí)常量 ? ? ? ? Pc_常量名
C++ 1、C中的存儲(chǔ)區(qū) 棧:編譯器自動(dòng)分配釋放(函數(shù)體中定義的變量)。 存儲(chǔ)在棧中的對(duì)象,如:Human Jack;會(huì)在超出作用域時(shí)自動(dòng)釋放。 堆:程序員分配釋放,程序結(jié)束可能由OS回收。使用new、malloc、calloc、realloc獲取的存儲(chǔ)區(qū)。 存儲(chǔ)在堆中的對(duì)象,如Human *Jack=new Human;不會(huì)自動(dòng)釋放。 靜態(tài)區(qū)、全局區(qū):程序結(jié)束釋放。加static修飾。如:靜態(tài)局部變量屬于靜態(tài)存儲(chǔ)方式,靜態(tài)局部變量始終存在著,生存期是整個(gè)源程序,但是作用域只在函數(shù)內(nèi)部,退出函數(shù)變量仍存在,但不能使用;允許對(duì)構(gòu)造類靜態(tài)局部變量賦初值,若未賦初值,則由系統(tǒng)自動(dòng)賦值。 常量:程序結(jié)束釋放。 2、內(nèi)存泄露 (1)假如沒有刪除一個(gè)指針就對(duì)其重新賦值。 int *p=new int; p=new int; 應(yīng)該寫成: int *p=new int; delete p; p=new int; 3、指針和引用 (1)常量指針:int *const p;這個(gè)指針?biāo)陨淼闹凳遣豢筛淖兊?#xff0c;但它指向的目標(biāo)是可以改變的。 (2)指向常量的指針:const int *p;指針可改變,指向的目標(biāo)不可改變。 (3)指向常量的常指針:const int *const p;本身和指向的目標(biāo)都不可改變。 (4)指針可以為空,引用不能為空。指針可以被賦值,引用只能初始化,不可以被賦為另一個(gè)對(duì)象的別名。堆中創(chuàng)建區(qū)域,必須用指針指向它,也可用引用來引用指向內(nèi)存空間的指針。 4、成員變量初始化 class Rectangle { public: ? Rectangle():length(3),width(5) ? { ?? ? } } 5、運(yùn)算符重載 class num { public: ? void operator++() ? { ? ? n++; ? } private: ? int n; } 6、向基類構(gòu)造函數(shù)傳遞參數(shù) class Father { public: ? Father() ? { ? } ? Father(string a,int i) ? { ? ? name=a; ? ? tall=i; ? } ? ? ~Father() ? { ? ? } protected: ? ? string name; ? ? int tall; }; class Son:public Father { public: ? Son(string a,int i,int j):Father(a,i) ? { ? ? weight=j; ? } protected: ? ? int weight; } 7、多重繼承產(chǎn)生兩義性 一個(gè)派生類從多個(gè)基類派生,而這些基類又有一個(gè)共同的基類,那么派生類訪問共同的基類中的成員時(shí)會(huì)產(chǎn)生兩義性。 class A { public: ? ? void hello() ? ? { ? ? ? ?? ? ? } }; class B { public: ? ? void hello() ? ? { ? ?? ? ? } }; class C:public A,public B { ? ? C c; ? ? c.A::hello(); ? ? c.B::hello(); } 8、虛函數(shù) virtual class Father { public: ? ? virtual void run() const ? ? { ? ?? ? ? } }; class Son:public Father { public: ? ? ? ? void run() const ? ? ? ? { ? ? ? ?? ? ? ? ? } }; int main() { ? ? Father *p=new Son; ? ? p->run(); ? ? delete p; ? ? return 0; } run()前加virtual表示該函數(shù)有多種形態(tài)的,即該函數(shù)可能被多個(gè)對(duì)象所擁有,而且功能不一,系統(tǒng)對(duì)于virtual的函數(shù)會(huì)自動(dòng)判斷是哪個(gè)對(duì)象調(diào)用了它,然后調(diào)用相應(yīng)的函數(shù)。 9、純虛函數(shù):一個(gè)虛函數(shù)初始化為0就變成了純虛函數(shù)。純虛函數(shù)無任何功能,不能直接調(diào)用,它是抽象的,只有被子類繼承了并賦予新功能才能使用。 virtual void run()=0; 包含純虛函數(shù)的類叫抽象類。 不可以定義抽象類的對(duì)象,但可以定義一個(gè)指向抽象類的指針,該指針可以在編譯時(shí)動(dòng)態(tài)指向子類的對(duì)象,從而實(shí)現(xiàn)程序多態(tài)性。 10、C++與資源相關(guān)的對(duì)象,析構(gòu)的時(shí)候都會(huì)把和它相關(guān)聯(lián)的銷毀。
MFC 1、MFC消息分類 (1)標(biāo)準(zhǔn)消息:除WM_COMMAND之外,所有以WM_開頭的消息;從CWnd類派生的類都可以接收這類消息。 (2)命令消息:來自菜單、加速鍵或工具欄按鈕的消息。這類消息都是以WM_COMMAND呈現(xiàn),在MFC中以ID區(qū)分不同命令的消息,在SDK中以wParam參數(shù)識(shí)別。從CCmdTarget派生的類,接收這類消息。 (3)通告消息:由控件產(chǎn)生的消息。從CCmdTarget派生的類都可以接收這類消息。 2、m_bAutoMenuEnabled=false; 如果m_bAutoMenuEnabled為true,則會(huì)依次檢查View、Document、Frame的消息映射表是否有這個(gè)彈出菜單中每個(gè)菜單項(xiàng)的處理函數(shù),如果沒有就會(huì)把那一項(xiàng)改為灰色的。 3、逗號(hào)表達(dá)式 if(GetDlgItem(IDC_NUMBER1)->GetWindowText(str),str=="Number1:") { } 4、控件訪問方式 (1)GetDlgItem()->Get(Set)WindowText() (2)Get(Set)DlgItemText() (3)Get(Set)DlgItemInt() (4)將控件和變量關(guān)聯(lián) (5)將控件和控件變量關(guān)聯(lián) (6)SendMessage() (7)SendDlgItemMessage()
?
?
總結(jié)
- 上一篇: [转]样式篇之如何实现合并单元格效果
- 下一篇: Xah Lee Web 李杀网