亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍

C#幾個經常犯錯誤匯總
來源:易賢網 閱讀:1516 次 日期:2015-04-02 13:48:05
溫馨提示:易賢網小編為您整理了“C#幾個經常犯錯誤匯總”,方便廣大網友查閱!

在我們平常編程中,時間久了有時候會形成一種習慣性的思維方式,形成固有的編程風格,但是有些地方是需要斟酌的,即使是一個很小的錯誤也可能會導致昂貴的代價,要學會善于總結,從錯誤中汲取教訓,盡量不再犯同樣錯誤,注重編程之美,代碼的優雅,總結幾個平常經常犯的錯誤。

1、在C#編程中,字符型類型是最容易處理出錯的地方,代價是非常昂貴,在.Net Framwork中,字符串是一個相當特別的引用類型,string本省就是一個不可繼承的密封類,但是它具有了值類型所應用的特點,但是它在CLR中內存還是保存于托管堆之上,也就是說,當我們每次定義一個字符串類型的時候,就在堆內存中開辟一端內存,而當我們字符串被修改之后,它會創建一個新的內存,注意這里的內存是不連續的,而是通過修改棧內地址引用而拼湊字符串,不會改變源字符串在內存中的地址,所以有些程序員總是喜歡使用這樣的方法格式化字符串:

string SelectText="select * from "+TableName+" where UserName='"+Name+"'";

上述代碼,使用了字符串拼湊的方法,因為使用了多重串聯,因此會在內存中創建兩個不必要的字符串垃圾副本。

其實在C#中,已經為我們提供了StringBuilder和String.Fromat來解決此問題,雖然他們可以實現同樣的功能,但是他們有質的變化,StringBuilder在內存中開辟的是一段連續內存,當增加新字符串時候,它會在棧中指向的同一個堆內存中連續存放字符,這就形成了性能的提升。所以我們將上面代碼改成:

string SelectText=string.Format("select * from {0} where UserName={1}",TableName,Name);

2、大多數開發人員都不知道內置的驗證數據類型的方法,如System.Int32,因此很多人都是自己實現的,其實這是不妥的,因為這些基本類型中都存在自己固有的類型驗證方法,下面這個就是自己實現驗證的一個字符串是否是數值的代碼:

public bool CheckIfNumeric(string value)

{

bool IsNumeric=true;

try

{

int i=Convert.ToInt32(value);

}

catch(FormatException excepiton)

{

IsNumeric=false;

}

return IsNumeric;

}

雖然使用了try catch語句,這不是最佳的做法,更好的方法是下面使用Int.TryParse;

int output=0;

bool IsNumeric=int.TryParse(value,out output);

int.TryParse是更快、更簡潔的方法。

3、自己利用IDisposable接口手動釋放內存

在.NET Framework中,對象的處理和使用一樣重要,理想的方法是在使用完對象的時候,在類中實現IDisposable接口中的dispose方法進行內存的釋放,當然在.Net本身提供的垃圾回收機制(GC)中就提供了這樣的功能,在我們實例化類對象時,在類本身的析構函數中會調用dispose方法,GC在各級內存堆滿的情況下,自動檢查對象使用情況,去相應的釋放內存,但是運行在非托管平臺上的方法,需要我們自己手動釋放內存,比如我們常見的SqlConnection對象,也就有了下面的創建、使用和處理方法:

public void DALOneMethod()

{

SqlConnection connection=null;

try

{

connection =new SqlConnection("。。。。。。。。。。。");

connection.Open();

//sqlcommand。。run

}

catch(Exception exception)

{

// manager exception

}

finally

{

connection.Close();

connection.Disopse();

}

}

上述代碼是大部分程序員會出現的代碼,乍看沒啥問題,連接處理在最后一個代碼中被明確調用,但是如果發生了一個異常,catch代碼塊就被執行,然后再執行最后一個代碼塊處理連接,因此在最后一個代碼塊執行之前,連接將一直留在內存中,大部分我們會在此處記錄錯誤,一般涉及到IO操作,如果延時時間比較長的話,這個連接將在內存時間長時間停留。我們一個原則就是當對象不再使用的時候我們里面釋放資源。

我們采用程序邏輯域來處理這個問題會更好:

public void DALOneMethod()

{

using(SqlConnction connection=new SqlConnection("。。。。。。。"))

{

connction.Open();

// do SUAD

}

}

當使用using代碼快時,對象上的dispose()方法將在執行推出邏輯域的時候調用,這樣就保證了SqlConnection的資源處理被盡早釋放,當然這個方法也適用于實現IDisposable接口的類,當時個人不推薦這樣做,在非常有把握的情況下可以手動釋放,但是沒把握還是叫給.net系統釋放,因為本身類的析構函數就實現這個方法,當我們自己重寫后,反而會導致系統誤以為你自己定義了方法,而推遲釋放資源,有興趣可以研究下GC運行本質,假如能在第一代被釋放的內存,如果我們重寫dispose方法反而推遲到第二代內存堆中釋放,顯然是不可取的。

4、學會合理的管理公共變量,我們在系統中經常會濫用公共變量,沒有做到合適的封裝好。

static void Main(string[] args)

{

MyAccount account=new MyAccount();

//這地方不能隨便的調用account里面的字段進行更改,但是缺改了

account.AccountNumber="ddddddddd";

Console.ReadKey();

}

public class MyAccount

{

public string AccountNumber;

public MyAcctount()

{

AccountNumber="ssssssssssssss";

}

}

在上面的MyAccount類中生命了一個AccountNumber公共變量,理想情況下,AccountNumber應該是只讀的,不能讓外界修改,但是這里MyAccount類卻沒有對它做任何控制。

聲明公共做法應該是使用屬性,如:

public class MyAccount

{

private stirng _accountNumber;

public string AccountNumber

{

get { return _accountNumber; }

}

public MyAccount()

{

_accountNumber="dddddddd";

}

}

這里我們封裝了AccountNumber公共變量,它變成了只讀,不能由調用者類進行修改。

5、嵌套的異常處理,有的開發人員喜歡在方法末尾加上處理的嵌套方法,如

public class NestedExceptionHandling

{

public void MainMethod()

{

try

{

//some implementation

ChildMethod1();

}

catch (Exception exception)

{

//Handle exception

}

}

private void ChildMethod1()

{

try

{

//some implementation

ChildMethod2();

}

catch (Exception exception)

{

//Handle exception

throw;

}

}

private void ChildMethod2()

{

try

{

//some implementation

}

catch (Exception exception)

{

//Handle exception

throw;

}

}

}

如果相同的異常被處理多次,性能開銷將會增加。

我們的解決方法是讓異常處理方法獨立開來,如:

public class NestedExceptionHandling

{

public void MainMethod()

{

try

{

//some implementation

ChildMethod1();

}

catch(Exception exception)

{

//Handle exception

}

}

private void ChildMethod1()

{

//some implementation

ChildMethod2();

}

private void ChildMethod2()

{

//some implementation

}

}

6、大數據量上使用Dataset和DataReader混用,當單表數據量很大的情況,使用DataSet是一種很不明智的選擇,應為DataSet是以DataTable內存形式存放數據量,一次性將數據拖入內存,當數據很大的情況下,這種方式是很吃內存的,相比DataSer,DataReader就顯得優雅很多,它是每次讀取一條數據,然后輪詢調用機制,但是也有它的弊端,就是相對長連接,但是對內存消耗而言這是有利的,當然DataSet在大部分應用場景下也是有自己的優點,充分解耦、一次性操作、領域模型操作等方面,兩者分情況分場景而用,這里只是稍微提提,根據場景分析區別。

內容更正

原篇文章不動,感謝園友點評,更正幾處內容

1、第一條String類型內存消耗問題,舉的例子不到位,在字符串數量少的時候性能沒有影響的,但就在.net Framwork平臺運行,分析應該就是此原理了。

現將老趙分析的結論歸結如下:

<1>對于字符串數量比較少的情況(從數據上來看大約是5-6個),StringBuilder的性能并不比普通連接操作來的快。因此,在任何地方都使用StringBuilder是不恰當的做法。

參照:

另附性能比較源碼同樣出自老趙博文,有興趣的園友可自行比較測試:

2、類對象在使用完對象后并不是通過析構函數調用Dispose方法實現垃圾回收,Dispose是.net類庫提供的一個釋放內存的方法,供開發人員自行調用,它是通過Finalizer是供GC調用。

關于其他SQL注入、屬性公開知否妥當、自行調用Dispose方法釋放內存是否會推遲釋放等觀點都是分應用場景而言,算作拋磚引玉吧,非絕對。最后謝園友們指點。

更多信息請查看IT技術專欄

更多信息請查看技術文章
易賢網手機網站地址:C#幾個經常犯錯誤匯總
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍
亚洲国产日韩在线| 欧美午夜精品久久久久免费视| 久久xxxx| 欧美日韩精选| 欧美日韩免费精品| 亚洲高清毛片| 亚洲一区二区三区午夜| 久久久久久久久久码影片| 国产精品v欧美精品v日本精品动漫 | 亚洲欧美综合| 国内精品久久久久久久影视麻豆| 欧美日韩综合精品| 国产欧美欧美| 欧美精品在线一区| 在线观看福利一区| 欧美一区二区三区四区夜夜大片| 亚洲黄色成人| 麻豆成人小视频| 一区二区三区高清视频在线观看| 鲁大师成人一区二区三区| 一区免费视频| 欧美日韩国产色综合一二三四| 亚洲精选一区| 伊人蜜桃色噜噜激情综合| 国产精品一二| 亚洲视频综合| 欧美1区2区| 91久久黄色| 欧美日韩国产高清| 亚洲欧美不卡| 一本色道久久综合亚洲精品不 | 欧美极品一区二区三区| 一本色道久久精品| 狠狠色丁香久久综合频道| 久久精品观看| 亚洲综合国产激情另类一区| 日韩视频一区二区三区在线播放免费观看| 欧美xxx在线观看| 新67194成人永久网站| 亚洲精品在线二区| 99精品福利视频| 狠狠色综合一区二区| 欧美日韩国产成人精品| 欧美极品一区| 欧美日韩高清免费| 欧美日韩另类丝袜其他| 欧美精品91| 国产综合色产| 国内精品久久久久久久97牛牛 | 久久人人97超碰国产公开结果| 一区二区精品| 亚洲一区二三| 亚洲免费一区二区| 免费日韩精品中文字幕视频在线| 亚洲免费综合| 欧美大香线蕉线伊人久久国产精品| 欧美一区二区三区在线免费观看| 欧美精品aa| 亚洲午夜在线| 中文亚洲免费| 欧美+日本+国产+在线a∨观看| 欧美精品首页| 亚洲国产精品久久久久久女王| 亚洲激情黄色| 国产欧美一区二区色老头| 国产精品一国产精品k频道56| 午夜一区不卡| 欧美久久久久久| 136国产福利精品导航网址| 国产欧美大片| 午夜精品一区二区三区四区| 在线观看成人av电影| 亚洲一区视频| 激情久久综合| 久久国产主播| 亚洲人成在线影院| 欧美一区免费视频| 99国产精品久久久久老师| 久久精品国产综合精品| 亚洲黄色影片| 久色成人在线| 国产亚洲二区| 国产一区视频观看| 另类亚洲自拍| 99亚洲一区二区| 欧美激情一区| 亚洲欧美日韩国产综合精品二区 | 亚洲欧洲日本国产| 久久国产日本精品| 亚洲精品一级| 亚洲网站视频| 欧美69wwwcom| 美女精品一区| 亚洲视频www| 亚洲视频一区| 欧美大片一区| 美女尤物久久精品| 国产亚洲精品久久飘花| 黄色精品免费| 欧美日韩在线高清| 久久本道综合色狠狠五月| 日韩视频不卡| 精品福利电影| 国产精品xxx在线观看www| 久久久久国产精品一区二区| 国产精品人人爽人人做我的可爱| 精品成人免费| 一区二区在线不卡| 精品999日本| 好看的av在线不卡观看| 欧美日韩1区| 欧美日韩日本国产亚洲在线| 久久午夜视频| 午夜精品网站| 欧美精品一区二区三区久久久竹菊| 亚洲一区日本| 国产精品一区免费观看| 国产区日韩欧美| 一区二区动漫| 午夜亚洲性色福利视频| 裸体一区二区| 午夜精品久久久久99热蜜桃导演 | 亚洲综合欧美日韩| 国产精品久久久久久久久久直播| 一本色道久久综合| 国产区二精品视| 国产欧美一级| 免费在线观看成人av| 亚洲永久在线| 午夜激情一区| 亚洲高清视频一区| 国产精品一区免费观看| 免费看亚洲片| 欧美日韩理论| 亚洲乱亚洲高清| 香蕉久久夜色精品| 欧美极品一区| 亚洲日本成人| 久久久久网站| 极品尤物久久久av免费看| 一区二区国产精品| 欧美一区亚洲| 亚洲精品123区| 亚洲欧美日韩国产一区| 久久久夜夜夜| 亚洲激情午夜| 欧美一区1区三区3区公司| 极品av少妇一区二区| 国产精品推荐精品| 欧美先锋影音| 国产伦精品一区二区三区| 欧美91大片| 亚洲看片一区| 欧美一区二区| 一本色道久久综合一区| 欧美在线看片| 国产精品一区视频| 亚洲成人原创| 欧美另类综合| 美女黄网久久| 夜夜夜久久久| 欧美日韩综合网| 国产欧美一区二区三区另类精品| 欧美激情视频一区二区三区在线播放 | 亚洲另类自拍| 欧美在线免费| 一区二区激情| 好吊视频一区二区三区四区| 免费日韩精品中文字幕视频在线| 亚洲国产日韩欧美一区二区三区| 久久国产精品高清| 国产亚洲欧洲| 亚洲激情欧美| 在线观看视频日韩| 欧美日韩精品免费观看| 亚洲欧美bt| 国产伦精品一区二区三区四区免费| 亚洲午夜一区| 国产自产在线视频一区| 欧美在线三级| 久久久精品动漫| 亚洲一区二区在线看| 在线亚洲自拍| 一区二区黄色| 国产精品日韩| 国产精品资源| 久久国产精品一区二区三区四区| 国产精品亚洲综合色区韩国| 国产亚洲毛片在线| 亚洲专区免费| 蜜桃视频一区| 你懂的国产精品永久在线| 久久天堂成人| 欧美成人综合一区| 国产一区日韩一区| 影音先锋久久久| 日韩亚洲一区在线播放| 亚洲巨乳在线| 国产精品久久久久毛片大屁完整版| 亚洲精品在线视频观看| 在线综合亚洲| 免费在线亚洲欧美| 欧美精品日本| 亚洲三级国产| 国产精品区二区三区日本| 亚洲一区二区免费看| 久久综合婷婷| 在线精品亚洲| 国产精品亚洲不卡a| 欧美在线亚洲| 1024日韩| 蘑菇福利视频一区播放| 欧美久色视频| 99精品国产在热久久婷婷| 国产日韩精品久久| 久久中文在线| 亚洲高清资源综合久久精品| 国产日韩欧美精品| 久久精品天堂| 黑人一区二区三区四区五区| 在线一区欧美| 欧美涩涩视频| 免费看黄裸体一级大秀欧美| 欧美午夜在线视频| 亚洲一区日韩| 在线观看一区视频| 久久中文欧美| 国产亚洲激情| 一区在线观看| 欧美激情一区| 久久av一区二区三区亚洲| 在线成人h网| 久久综合亚州| 国产精品一区免费观看| 伊人久久大香线蕉综合热线| 蜜桃av久久久亚洲精品| 99精品欧美一区二区三区| 久久综合导航| 性欧美videos另类喷潮| 99精品热视频只有精品10| 欧美日本精品| 久久精品麻豆| 亚洲免费综合| 国产乱码精品| 在线视频一区观看| 在线观看成人一级片| 欧美精品一区二区视频| 性刺激综合网| 亚洲一区免费看| 国产欧美亚洲一区| 日韩午夜电影| 在线观看不卡| 亚洲国产专区| 亚洲国产欧美日韩| 亚洲激情专区| 在线日韩av| 在线精品一区| 亚洲欧洲一区二区在线观看 | 狼狼综合久久久久综合网| 国产日韩精品视频一区二区三区| 亚洲视频狠狠| 国产主播一区| 国产精品vip| 欧美性天天影院| 午夜久久一区| 欧美特黄视频| 亚洲无玛一区| 最新国产拍偷乱拍精品| 亚洲激情网址| 亚洲精品激情| 国产一区二区三区的电影| 国产精品一区视频网站| 校园激情久久| 欧美一区亚洲| 狠狠色狠狠色综合日日tαg| 狠久久av成人天堂| 亚洲伦伦在线| 亚洲欧美日韩精品一区二区| 蜜桃av一区| 欧美视频日韩| 亚洲精品美女91| 99国产精品视频免费观看一公开| 一区二区三区av| 久久国产成人| 狠狠色综合网| 国产精品亚洲一区| 欧美福利一区| 亚洲日本无吗高清不卡| 性欧美长视频| 欧美天天在线| 国产精品久久久亚洲一区| 久久综合久久久| 亚洲国产美女| 久久精品中文| 亚洲激情网址| 久久亚洲欧美| 影音先锋在线一区| 亚洲在线成人| 激情自拍一区| 性高湖久久久久久久久| 国产精品成人一区二区网站软件| 最新日韩av| 久久在线91| 亚洲美女黄色| 欧美日韩精品久久| 国产精品亚洲不卡a| 亚洲性图久久| 久久亚洲精品伦理| 中日韩在线视频| 欧美午夜影院| 久久精品国语| 一本色道久久精品| 国产精品国产一区二区| 免费久久久一本精品久久区 | 黄色一区三区| 久久精品电影| 亚洲青色在线| 狠狠色噜噜狠狠色综合久| 久久国产88| 一区二区国产精品| 在线欧美福利| 国内精品亚洲| 狂野欧美一区| 久久国产精品久久久久久电车| 亚洲国产日韩欧美| 欧美日韩在线观看一区二区三区| 亚洲一区bb| 国产日韩1区| aa级大片欧美三级| 狠狠色狠狠色综合人人| 欧美激情综合| 欧美搞黄网站| 欧美日韩国产探花| 午夜精品影院| 欧美亚韩一区| 激情视频一区二区| 韩国一区二区三区美女美女秀| 久久综合图片| 欧美69wwwcom| 欧美日韩国产欧| 欧美日本一区二区视频在线观看| 久久字幕精品一区| 午夜精品久久久久99热蜜桃导演| 久久视频一区| 亚洲欧美一区二区原创| 欧美日韩p片| 亚洲性图久久| 亚洲激情啪啪| 国产一区91| 免费日韩视频| 欧美成人日韩| 黑丝一区二区三区| 亚洲国产一区二区精品专区| 亚洲丰满在线| 国产精品久久久久毛片大屁完整版| 国产九九精品| 欧美大片专区| 亚洲经典在线| 国产伦精品一区二区三区| 久久精品91| 亚洲午夜激情在线| 一区二区三区高清视频在线观看| 亚洲少妇诱惑| 久久久噜噜噜| 一区在线播放| 国产精品视频久久一区| 久久久精品五月天| 海角社区69精品视频| 一级日韩一区在线观看| 久久久久久亚洲精品杨幂换脸| 欧美一区二区三区在线免费观看| 国产精品国产亚洲精品看不卡15 | 欧美日韩精品免费观看| 国内精品国语自产拍在线观看| 激情久久一区| 国产乱人伦精品一区二区| 午夜精品免费| 国产欧美日韩综合精品二区| 欧美在线免费一级片| 亚洲欧洲综合| 欧美日韩高清在线一区| 国产欧美一区二区视频| 欧美激情aⅴ一区二区三区| 99re6热在线精品视频播放速度| 久久亚洲欧洲| 国产亚洲激情| 影音先锋日韩资源| 狂野欧美性猛交xxxx巴西| 亚洲日韩视频| 欧美日韩国产三区| 免费日韩一区二区| 日韩视频在线观看国产| 国产精品s色| 久久精选视频| 国产亚洲毛片在线| 亚洲精品九九| 在线精品福利| 黑人中文字幕一区二区三区| 久久午夜精品一区二区| 国产伦精品一区|