初學(xué)C#編程的注意事項(xiàng)
下面是8個(gè)C#編程時(shí)的注意事項(xiàng)是給初學(xué)C#編程者的,可能你知道,也可能你不知道,不過(guò)這些都是一些可能會(huì)讓人疏忽的地方,還是要注意一下。
1.使用String變量
初學(xué)C#編程首先注意String變量的使用。考慮有下面的一個(gè)程序想判斷一下字符串是否有內(nèi)容。
- if (someString.Length > 0)
- {
- // …
- }
但是,這個(gè)字符串對(duì)象很可能是個(gè)空對(duì)象,所以,最好先判斷一下null
- if (!String.IsNullOrEmpty(someString))
- {
- // 是不是更好一些?
- }
2.字符器連接
- string s = “dev”;
- s += “-”;
- s += “the”;
- s += “-”;
- s += “web”;
- s += “.”;
- s += “com”;
這樣做沒(méi)什么問(wèn)題,只不過(guò)性能不高,因?yàn)?=操作符其實(shí)調(diào)用的是String類(lèi)的Append訪(fǎng)問(wèn),所以,+=會(huì)有兩次函數(shù)調(diào)用,下面的則會(huì)好一些。
- StringBuilder s = new StringBuilder();
- s.Append(”dev”);
- s.Append(”-”);
- s.Append(”the”);
- s.Append(”-”);
- s.Append(”web”);
- s.Append(”.”);
- s.Append(”com”);
3.使用Console
- Console.WriteLine("A= " + 1 + " B=" + 2 + " C= " + someValue);
和第二點(diǎn)說(shuō)的一樣,這并沒(méi)有效率,使用下面的語(yǔ)句,會(huì)更有效率。
- Console.WriteLine(”A: {0}\nB: {1}\nC: {2}”, 1, 2, someValue);
4.字符串轉(zhuǎn)整型
- int i = int.Parse(Request.QueryString["id"]);
這樣做的問(wèn)題是,如果有人這樣請(qǐng)求你的頁(yè)面:yourpage.aspx?id=A6,那么A6將會(huì)導(dǎo)致你的程序拋出一個(gè)異常。因?yàn)锳6不是一個(gè)整數(shù)字符串。使用TryParse會(huì)好一點(diǎn)。
- int i;
- if (!int.TryParse(Request.QueryString["id"] , out i))
- {
- //…
- }
5. 調(diào)用IDbConnection 的 Close 方法
- IDbConnection dbConn = null;
- try
- {
- dbConn = new SqlConnection(”some Connection String”);
- dbConn.Open();
- }
- finally
- {
- dbConn.Close();
- }
調(diào)用SqlConnection的構(gòu)造函數(shù)可能會(huì)出現(xiàn)一個(gè)異常,如果是這樣的話(huà),我們還需要調(diào)用Close方法嗎?
- IDbConnection dbConn = null;
- try
- {
- dbConn = new SqlConnection(”Some Connection String”);
- dbConn.Open();
- }
- finally
- {
- if (dbConn != null)
- {
- dbConn.Close();
- }
- }
6.使用List類(lèi)
- public void SomeMethod(List< SomeItem> items)
- {
- foreach(var item in items)
- {
- // do something with the item…
- }
- }
如果我們只是遍歷List容器中的所有內(nèi)容的話(huà),那么,使用IEnumerable接口會(huì)更好一些。因?yàn)楹瘮?shù)參數(shù)傳遞一個(gè)List對(duì)象要比一個(gè)IEnumerable接口要花費(fèi)更多的開(kāi)銷(xiāo)。
- public void SomeMethod(IEnumerable< SomeItem> items)
- {
- foreach(var item in items)
- {
- // do something with the item…
- }
- }
7.直接使用數(shù)字
- if(mode == 1) { … }
- else if(mode == 2) { … }
- else if(mode == 3) { … }
為什么不給你的這些數(shù)字取個(gè)名字呢?比如使用Enumerations。
- public enum SomeEnumerator
- {
- DefaultMode = 1,
- SafeMode = 2,
- NormalMode = 3
- }
- if(mode == SomeEnumerator.DefaultMode) { … }
- else if(mode == SomeEnumerator.SafeMode) { … }
- else if(mode == SomeEnumerator.NormalMode) { … }
8.字符串替換
- string s = "www.coolshell.cn is a amazing site";
- s.Replace("amazing", "awful");
字符串s的內(nèi)容什么也不會(huì)改變,因?yàn)閟tring返回的是替換過(guò)的字串。這點(diǎn)很多初學(xué)者經(jīng)常忘了。下面就沒(méi)有問(wèn)題了。
- s = s.Replace("amazing", "awful");
希望這些注意事項(xiàng)可以幫助初學(xué)C#編程者更容易掌握C#編程。
【編輯推薦】