亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

.NET10個編程經驗技巧

2024-07-10 13:13:05
字體:
來源:轉載
供稿:網友

1、盡量減少表單回送

每當點擊web網頁上的button、linkbutton或imagebutton控件時,表單就會被發送到服務器上。如果控件的autopostback屬性被設置為true,如果checkbox、checkboxlist等控件的狀態被改變后,也會使表單會發送回服務器。

每次當表單被發送回服務器,就會被重新加載,啟動page_load****,執行page_load****處理程序中的所有代碼。把網頁的初始化代碼放在這里是最合適不過的了。我們經常會希望在每次加載網頁時執行一些代碼,而希望只有在網頁第一次加載時執行另一些代碼,甚至希望一些代碼在除首次加載外的每次加載時執行。
 
可以利用ispostback特性來完成這一功能。在網頁第一次加載時,該屬性的值是false。如果網頁因回送而被重新加載,ispostback屬性的值就會被設置為true。通過測試,可以在任意時候執行指定的代碼。下面是相關的c#代碼:
 
以下為引用的內容: 

protected void page_load(object sender, eventargs e) 
{
// 網頁每次加載時,執行的一些操作
if (!ispostback)
{
// 網頁第一次加載時執行的操作
}
else
{
// 回送時執行的操作
}
// 網頁每次加載時執行的操作
      } 

2、在使用visual studio .net時,除直接或非引用的對象外,不要使用缺省的名字。

.net帶來的好處之一是所有的源代碼和配置文件都是純文本文件,能夠使用notepad或wordpad等任意的文本編輯器進行編輯。如果不愿意,我們并非一定要使用visual studio .net作為集成開發環境。但使用了visual studio .net,我們可以在windows文件管理器中看到文件,或在visual studio .net之外從文本編輯器中瀏覽文件的內容。
 
使用visual studio .net作為集成開發環境有許多好處,其中最顯著的好處是它極大地提高了生產效率。使用visual studio. net,我們能夠在付出較小代價的情況下更快地開發軟件。作為集成開發環境一部分的intellisense提供自動的代碼完成、在輸入方法或函數時提供動態幫助、語法錯誤的實時提示,以及其他能夠提高生產效率的功能。
 
象其他復雜的工具那樣,在學會如何充分發揮它的作用和掌握其“習性”前,visual studio .net也會使我們產生一種挫折感。有時,它象一個難以了解的黑盒子,會生成大量的文件和許多無用的代碼。

visual studio .net的一個功能是,無論是類、控件或表單中的對象,它都能夠為新對象提供缺省名字。例如,如果我們創建了一個新的asp.net web application,其缺省的名字將是webapplication1。我們可以在“新工程”對話框中方便地改變該應用的名字,但同時改變的只是該應用程序的名字空間的名字及其所在的虛擬目錄,源代碼文件的缺省名字仍然是webform1.aspx和webform1.aspx.cs(c#工程)或webform1.aspx.vb(vb.net工程)。

我們可以在方案瀏覽器中改變aspx和代碼使用的文件名字,但web頁類的名字仍然將是webform1。如果在該web表單上生成一個按鈕,其缺省的名字將是button1。事實上,所有控件的名字都是由控件的類型和數字組成的。

我們能夠,也應該將應用程序中所有的表單和控件的名字都修改成有意義的名字。對于較小的演示性程序而言,缺省的名字還能夠勝任,但如果應用程序由多個表單,每個表單上有許多按鈕和標簽時,象frmstartup、frmdataentry和frmreports這樣的表單名就比form1、form2和form3這樣的名字更易于理解和維護。

如果表單上控件要在代碼的其他地方引用,使它有一個有意義的名字就更重要了。btnok、btncancel和btnprint這樣的名字使看代碼的人更容易理解,因而,也比名字為button1、button2、button3這樣的控件更容易維護。

修改一個工程中所有文件中出現的一個名字的一個好方法是,在visualstudio.net菜單中依次選擇“編輯”->“發現和替換”->“替換”命令。在看二周前編寫的代碼時,我們經常就象第一次見到這些代碼一樣,因此使它們有一個有助于我們理解其含義的名字是十分有必要的。

3、即使不使用visual studio .net進行編程,使用代碼支持文件也有利于提高應用程序的性能 。

在web應用程序、web服務或web控件等所有的asp.net web工程中,visual studio .net都使用代碼支持文件。代碼支持文件使工程具有更好的組織、模塊性,更適合多人組成的開發團隊。另外,它還會帶來性能的提高。

代碼支持文件的內容被編譯成一個組合文件中的類,一般是一個dll文件,有時也可以是exe文件。該文件駐留在應用程序的組合體高速緩沖區中,在應用程序啟動時,可以立即得到它。

如果代碼是包含在< script>標記中或aspx文件代碼中,它仍然會被編譯成一個web頁類。在這種情況下,每當該網頁在應用程序對話中第一次加載時,都需要重新進行編譯,被編譯的類就會駐留在內存中。每當計算機啟動、iis停止、重新啟動或者源代碼、配置文件改變時,該文件必須重新編譯。盡管不大,但這樣引起的性能損耗也是相當可觀的。

4、使用stringbuilder類

字符串在.net框架中是不可變的,這意味著改變字符串的操作符和方法會返回字符串的改變后的拷貝,這意味著性能還有提高的空間。當進行大量的字符串操作時,使用stringbuilder類就是一種比較好的選擇了。

下面的c#代碼測試用二種方式從10000個子字符串中生成字符串所需要的時間。第一次使用了一個簡單的字符串串聯操作;第二次使用了stringbuilder類。

要想查看結果字符串,可以去掉下面的代碼中注解行的注解符號:

以下為引用的內容: 

< %@ page language=”c#” %> 
< script runat=”server”>
void page_load(object source, eventargs e)
{
int intlimit = 10000;
datetime starttime;
datetime endtime;
timespan elapsedtime;
string strsub;
string strwhole = “”;
// 首先執行字符串連接操作
starttime = datetime.now;
for (int i=0; i < intlimit; i++)
{
strsub = i.tostring();
strwhole = strwhole + “ “ + strsub;
}
endtime = datetime.now;
elapsedtime = endtime - starttime;
lblconcat.text = elapsedtime.tostring();
// lblconcatstring.text = strwhole;
// 使用stringbuilder類進行同樣的操作
starttime = datetime.now;
stringbuilder sb = new stringbuilder();
for (int i=0; i < intlimit; i++)
{
strsub = i.tostring();
sb.append(“ “);
sb.append(strsub);
}
endtime = datetime.now;
elapsedtime = endtime - starttime;
lblbuild.text = elapsedtime.tostring();
// lblbuildstring.text = sb.tostring();
}
< /script>
< html>
< body>
< form runat=”server”>
< h1>string concatenation benchmark< /h1>
concatenation:
< aspabel id=”lblconcat” runat=”server”/>
< br/>
< aspabel id=”lblconcatstring” runat=”server”/>
< br/> < br/>
stringbuilder:
< aspabel id=”lblbuild” runat=”server”/>
< br/>
< aspabel id=”lblbuildstring” runat=”server”/>
< /form>
< /body>
< /html> 

比使用字符串連接的速度快近200倍。

5、只在必要時使用服務器端控件

asp.net中新引入了一種在服務器端運行的被稱作web server controls的控件,在代碼中,它們經常通過下面的語法被說明:
 
< asp:textbox id=”txtlastname” size=”40” runat=”server” /> 它們有時也被稱作asp控件。服務器端控件是由runat屬性指示的,它的值總是“server”。

通過添加runat屬性,一般的html控件可以被很方便地轉換到服務器端運行,下面是一個簡單的例子:

< input type=”text” id=”txtlastname” size=”40” runat=”server” /> 

可以通過id屬性中指定的名字,我們可以引用程序中的控件,可以通過編程的方式設置屬性和獲得值,因此,服務器端處理方式有較大的靈活性。這種靈活性是有一定代價的。每種服務器端控件都會消耗服務器上的資源。另外,除非控件、網頁或應用程序明確地禁止view state,控件的狀態是包含在view state的隱藏域中,并在每次回送中都會被傳遞,這會引起嚴重的性能下降。

在這方面的一個很好的例子是,網頁上控件表格的應用,如果不需要在代碼中引用表格中的元素,則使用無需進行服務器端處理的html表格。我們仍然可以在html表格單元中放置服務器控件,并在代碼中引用服務器控件。如果需要引用任意的表格元素,例如指定的單元,則整個表格必須是服務器控件。

6. hyperlink控件、linkbutton控件的差別

對于web訪問者而言,hyperlink、linkbutton控件是一樣的,但它們在功能方面仍然有較大的差異。當用戶點擊控件時,hyperlink控件會立即將用戶“導航”到目標url,表件不會回送到服務器上。linkbutton控件則首先將表件發回到服務器,然后將用戶導航到目標url。如果在“到達”目標url之前需要進行服務器端處理,則使用linkbutton控件;如果無需進行服務器端處理,則可以使用hyperlink控件。

7、注釋代碼

這一技巧并不是針對asp.net的,但它是一個良好的編程習慣。 注釋不僅僅應當說明代碼會執行什么操作,還應當注明原因。例如,不要僅僅在注釋中說明是在遍歷數組,而是要說明遍歷數組是根據某一算法計算一個值,除非算法是相當簡單的,否則還應當對算法進行簡要的說明。

.net工程中的不同的編程語言都有各自不同的注釋符號,下面是一個簡要的說明:

以下為引用的內容: 

html < !-- 注釋 -->javascript // 注釋vbscript ‘ 注釋vb.net ‘ 注釋c# // 注釋/* 多行內容的注釋*/ 
sql -- 注釋
在服務器控件的開始和結束標記中沒有注釋符號,但服務器能夠忽略掉所有它不能識別的屬性,因此我們能夠通過使用沒有定義的屬性來插入注釋。下面是一個例子:
 
< asp:textbox id=”txtlastname” size=”40” comment=”這是我的注釋” runat=”server” /> 
在visual studio .net中對源代碼進行注釋非常簡單。高亮度顯示需要注釋的行,然后按ctrl+k+c組合鍵添加注釋。要刪除注釋,只需高亮度顯示被注釋的代碼,并按下ctrl+k+u組合鍵。

在c#工程中,我們還可以通過在每行的開始處使用///輸入xml注釋小節。

在注釋小節中,我們可以使用下面的xml標記組織注釋:

以下為引用的內容:
 
< summary>< /summary> 
< remarks>< /remarks >
< param>< /param>
< returns>< /returns>
< newpara>< /newpara>

要在visual studio .net中查看這些xml注釋的格式化的報告,我們可以首先選擇“工具”菜單項,然后選擇“建立注釋web網頁”菜單項。

8、使用trace方法和trace屬性記錄page目錄中網頁的執行情況

調試程序的一種古老的技術是在程序中的關健點插入輸出語句,通常情況下,輸出信息中會包含重要變量的值,相關信息可以輸出到屏幕、日志文件或者數據庫。

在asp.net中,通過使用page命令中的trace屬性,這種調試技術的使用更簡單了。page命令是aspx文件開始處的一行代碼,它提供編譯器的指示。page命令中包含一個或多個屬性,向編譯器提供使用的編程語言、代碼支持文件的位置或要繼承的類的名字等信息。

page命令中的屬性之一是trace,其值可能是true或false,下面是一個典型的page命令, 其中的trace屬性的值是true:

< %@ page language=”c#” trace=”true” %>

如果trace屬性的值設置為true,由aspx文件生成的web頁就會顯示出來,除了網頁本身外,關于該頁的大量其他信息也會顯示出來。這些信息以下面小節的形式顯示在一張表格中:

·request細節 提供session id、請求時間和請求的狀態碼。

·trace information 包含跟蹤日志、網頁生命周期中按時間先后順序各個步驟的列表。另外,也可以向其中添加定制信息。

·控件樹 以一種分層次的方式列出網頁上的所有控件,包括每個控件以字節計算的大小。

·cookies集合 列出該網頁創建的所有cookie。

·頭部集合 http頭部以及它們的值。

·server變量 與該網頁相關的server環境變量。

包含在trace information小節中的跟蹤日志是最有用的,在這里我們可以插入自己的跟蹤命令。trace類中有2個方法能夠在跟蹤日志中插入命令:

trace.write和trace.warn,除了trace.warn命令用紅色字體顯示。trace.write命令用黑色字體顯示外,它們是相同的。下面是跟蹤日志的一個屏幕快照,其中包含有幾個trace.warn命令。

跟蹤日志中最方便的功能是我們可以在開發和測試過程中在整個代碼中插入trace.write和trace.warn語句,而在最終交付應用程序時,可以通過改變page命令中trace屬性的值,禁止這些命令起作用,而無需在部署應用軟件前刪除這些輸出語句。

9、使用存儲過程

微軟公司的sql server和其他現代關系數據庫都使用sql命令定義和處理查詢。一個sql語句或一系列sql語句提交給sql server,sql server會對命令進行解析,然后創建一個查詢計劃并對它進行優化,然后執行該查詢計劃,這都需要大量的時間。

存儲過程是一系列被查詢處理器預解析和優化的sql命令,這些命令會被存儲起來,可以得到快速地執行。

存儲過程也被稱作sprocs,它可以接收輸入參數,使一個單一的存儲過程能夠處理較大范圍的特定的查詢。

因為sprocs是預先被解析的,對于復雜的查詢更顯得重要,其查詢計劃是預先優化的,因此調用查詢過程比執行相同功能的sql語句速度要快得多。

10、使用.net命令行

.net命令行工具在命令提示符窗口中運行。為了使命令能夠執行,它必須駐留在命令提示符的當前目錄中,或通過設置path環境變量。

.net sdk在“啟動”菜單上安裝一個菜單項,該菜單項能夠打開一個正確設置了path環境變量的命令提示符窗口。我們可以通過依次點擊“開始”->“程序”->“microsoft visual studio .net”->“visual studio .net工具”->“visual studio .net命令提示符”,啟動命令提示符窗口。

通過在將該菜單項從菜單上拖到桌面上時,同時按ctrl+c鍵,就可以將該菜單項的快捷方式拷貝到桌面上,使用起來會非常方便。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色老头一区二区三区在线观看| 成人免费视频网址| 国产热re99久久6国产精品| 亚洲欧美精品中文字幕在线| 欧美黄色免费网站| 国产va免费精品高清在线观看| 欧日韩不卡在线视频| 亚洲国产精品久久久久秋霞不卡| 亚洲老头老太hd| 国产精品视频xxxx| 亚洲成年人在线| 成人黄色av网站| 欧美国产视频一区二区| 精品毛片三在线观看| 日韩欧美在线视频日韩欧美在线视频| 色综合久久精品亚洲国产| 国产精品亚洲视频在线观看| 91在线视频导航| 少妇激情综合网| 久久福利视频网| 日韩极品精品视频免费观看| 国产成人亚洲综合| 日韩av片永久免费网站| 欧美国产日本高清在线| 69av在线播放| 国产精品91在线| 日韩中文字幕在线看| 欧美电影免费在线观看| 亚洲人成电影在线播放| 午夜精品美女自拍福到在线| 福利视频导航一区| 尤物九九久久国产精品的分类| 九九精品在线视频| 亚洲一区二区福利| 日韩电影第一页| 久久久噜噜噜久噜久久| 中文字幕免费精品一区高清| 蜜臀久久99精品久久久无需会员| 麻豆国产va免费精品高清在线| 国产精品一区二区三区在线播放| 91av在线不卡| 欧美一级成年大片在线观看| 国产精品视频在线观看| 91精品久久久久久久久久久| 久久久久久91| 亚洲黄一区二区| 福利视频第一区| 97久久伊人激情网| 日韩免费av片在线观看| 久久精品中文字幕电影| 欧美理论电影网| 美日韩精品免费观看视频| 国产婷婷成人久久av免费高清| 亚洲色图第三页| 中文字幕综合在线| 欧美精品18videos性欧美| 亚洲国产中文字幕久久网| 成人午夜激情网| 日韩网站在线观看| 日韩精品有码在线观看| 国产精品国产自产拍高清av水多| 久久国产精品久久国产精品| 国产精品久久精品| 热门国产精品亚洲第一区在线| 一区二区三区日韩在线| 欧美日韩成人黄色| 日韩av电影在线免费播放| 日韩精品极品在线观看播放免费视频| 91系列在线观看| 日韩av在线高清| 国产精品日韩在线播放| 亚洲男人天堂久| 在线观看国产欧美| 亚洲精品欧美日韩专区| 国产精品美女999| 欧美成人在线免费| 亚洲精品456在线播放狼人| 欧美自拍大量在线观看| 91精品国产自产在线老师啪| 日本精品久久久久久久| 久久不射电影网| 69**夜色精品国产69乱| 亚洲国产精品国自产拍av秋霞| 96国产粉嫩美女| 国产精品99免视看9| 国产成人午夜视频网址| 欧美激情在线播放| 欧美理论电影在线播放| 亚洲精品综合精品自拍| 国产精品三级美女白浆呻吟| 欧美性猛交xxxx久久久| 久久免费少妇高潮久久精品99| 亚洲欧美在线播放| 亚洲成在人线av| 亚洲精品白浆高清久久久久久| 77777亚洲午夜久久多人| 国产成一区二区| 精品国产乱码久久久久久婷婷| 亚洲护士老师的毛茸茸最新章节| 久久夜色精品国产| 成人精品久久av网站| 成人做爰www免费看视频网站| 中文字幕精品—区二区| 国产精品高清在线| 欧美成人精品在线| 在线亚洲欧美视频| 欧美激情综合色| 欧美极品美女视频网站在线观看免费| 国产99久久精品一区二区 夜夜躁日日躁| 日韩精品丝袜在线| 91精品国产乱码久久久久久久久| 亚洲精品国产拍免费91在线| 免费97视频在线精品国自产拍| 久久久久久久久久久久久久久久久久av| 国产精品午夜视频| 久久免费视频这里只有精品| 久久视频在线看| 亚洲色图狂野欧美| 亚洲石原莉奈一区二区在线观看| 久久精品视频在线| 亚洲xxxx18| 日韩中文字幕视频| 456亚洲影院| 国产成人精品网站| 日本欧美中文字幕| 综合网日日天干夜夜久久| 久久天天躁狠狠躁夜夜av| 欧美激情久久久久| 欧美专区在线播放| 日韩色av导航| 欧美黑人xxxⅹ高潮交| 69久久夜色精品国产69| 久久久精品电影| 亚洲性线免费观看视频成熟| 北条麻妃一区二区三区中文字幕| 久久人人爽人人爽人人片av高请| 国产成人小视频在线观看| 精品国偷自产在线视频| 久久夜色精品国产亚洲aⅴ| 中文字幕日韩专区| 成人免费观看a| 欧美又大又硬又粗bbbbb| 久久理论片午夜琪琪电影网| 国产视频精品久久久| 国产主播喷水一区二区| 日韩精品亚洲精品| 亚洲电影成人av99爱色| 国产91精品久| 国产成人av在线| 亚洲激情国产精品| 性金发美女69hd大尺寸| 欧美日韩国产二区| 国产欧美精品va在线观看| 色一情一乱一区二区| 亚洲伊人成综合成人网| 欧美亚洲视频在线看网址| 亚洲自拍偷拍视频| 国内精品久久影院| 亚洲天堂av图片| 欧美激情a在线| 亚洲毛片在线观看.| 日产日韩在线亚洲欧美| 亚洲最新av在线网站| 国产精品91久久久久久|