首頁 >後端開發 >C#.Net教程 >常用的asp.net 技巧總結

常用的asp.net 技巧總結

怪我咯
怪我咯原創
2017-03-31 10:37:491375瀏覽


#

vs2005常用快速鍵 

偵錯快速鍵

F6: 產生解決方案
Ctrl+F6: 產生目前專案
F7: 檢視程式碼
Shift+F7: 檢視窗體設計器
F5: 啟動偵錯
Ctrl+F5: 開始執行(不偵錯)
Shift+F5: 停止偵錯
Ctrl+Shift+F5:重啟調試
F9: 切換斷點
Ctrl+F9: 啟用/停止斷點
Ctrl+Shift+F9: 刪除全部斷點
F10: 逐過程
Ctrl+F10: 運行到遊標處
F11: 逐語句

編輯快捷鍵

Shift+Alt+Enter: 切換全螢幕編輯

Ctrl+B,T / Ctrl+K, K: 切換書籤開關
Ctrl+B,N / Ctrl+K,N: 移到下一書籤
Ctrl+B,P: 移到上一書籤
Ctrl+B,C: 清除全部標籤

Ctrl+I: 漸進式搜尋
Ctrl+Shift+I: 反向漸進式搜尋
Ctrl+F: 尋找
Ctrl+Shift+F: 在檔案中尋找
F3: 尋找下一個
Shift+F3: 尋找上一個
Ctrl+H: 取代
Ctrl+Shift+H: 在檔案中取代
Alt+F12: 找出符號(列出所有查找結果)

Ctrl+Shift+V: 剪貼簿循環

#Ctrl+左右箭頭鍵: 一次可以移動一個單字
Ctrl+上下箭頭鍵: 捲動代碼螢幕,但不移動遊標位置。
Ctrl+Shift+L: 刪除目前行
Ctrl+M,M: 隱藏或展開目前巢狀的折疊狀態
Ctrl+M,L: 將所有過程設為相同的隱藏或展開狀態
Ctrl+M,P: 停止大綱顯示
Ctrl+E,S: 查看空白
Ctrl+E,W: 自動換行
Ctrl+G: 前往指定行
Shift+Alt+箭頭鍵: 選擇矩形文字
Alt+滑鼠左按鈕: 選擇矩形文字

Ctrl+Shift+U: 全部變成大寫
Ctrl +U: 全部變成小寫

程式碼快速鍵

Ctrl+J / Ctrl+K,L: 列出成員
Ctrl+Shift+空白鍵/ Ctrl+K,P:參數資訊
Ctrl+K,I: 快速資訊

Ctrl+E,C / Ctrl+K,C: 註解選取內容
Ctrl+E,U / Ctrl+K,U: 取消選取註解內容

Ctrl+K,M: 產生方法存根
Ctrl+K,X: 插入程式碼片段
Ctrl+K,S: 插入外側程式碼

F12: 前往所呼叫程序或變數的定義

視窗快速鍵

Ctrl+W,W: 瀏覽器視窗
Ctrl+W,S: 解決方案管理員
Ctrl+W,C: 類別檢視
Ctrl+W,E: 錯誤清單
Ctrl+W,O: 輸出檢視
Ctrl+W,P: 屬性視窗
Ctrl+W,T: 任務清單
Ctrl+W,X: 工具箱
Ctrl+W,B: 書籤視窗
Ctrl+W,U: 文件大綱

Ctrl+D,B: 斷點視窗
Ctrl+D,I: 即時視窗

Ctrl+Tab: 活動窗體切換

Ctrl+Shift+N: 新專案
Ctrl+Shift+O: 開啟專案
Ctrl+Shift+S: 全部儲存
Shift+Alt+C: 新類別
Ctrl+Shift+A: 新項目



3、變數.ToString()
字元型轉換轉為字串
12345.ToString("n"); //產生12,345.00
12345.ToString("C"); //產生¥12,345.00
12345.ToString("e") ; //產生1.234500e+004
12345.ToString("f4"); //產生12345.0000
12345.ToString("x"); //產生3039 (16進位)
12345. ToString("p"); //產生1,234,500.00%

1.9 取中文日期顯示-年月日時分
string strY=currentTime. ToString("f"); //不顯示秒

1.10 取中文日期顯示_年月
string strYM=currentTime.ToString("y");

#1.11 取中文日期顯示_月日
string strMD=currentTime.ToString("m");

1.12 取中文年月日
string strYMD=currentTime.ToString("D");

1.13 取目前時分,格式為:14:24
string strT=currentTime.ToString("t");

1.14 取目前時間,格式為:2003-09-23T14:46 :48
string strT=currentTime.ToString("s");

#1.15 取目前時間,格式為:2003-09-23 14:48:30Z
string strT=currentTime.ToString ("u");

1.16 取目前時間,格式為:2003-09-23 14:48
string strT=currentTime.ToString("g");

#1.17取目前時間,格式為:Tue, 23 Sep 2003 14:52:40 GMT
string strT=currentTime.ToString("r");

1.18取得目前時間n 天後的日期時間
DateTime newDay = DateTime.Now.AddDays(100);



字串變數.Replace("子字串","替換為")
字串替換
如:
string str="中國";
str=str.Replace("國","央"); //將國字換成央字
Response.Write(str); //輸出結果為「中央」



C#程式設計規格
養成良好的程式設計風格是極其必要的,誰也不願意看到一堆雜亂無章的程式碼,將來你或別人在維護的時候是多麼的痛苦,所以,從現在開始,養成良好的編碼習慣,包括變數命名,註釋,程式碼縮排....。
1 .利用Pascal的方式定義型別、方法名稱和常數  

public class SomeClass
{
 const int DefaultSize=100;  
 public SomeMethod()
 {
 }
}

#2.局部變數與方法的參數使用駱駝命名法

3.介面
int number;  
           void MyMethod(int someNumber)  
   
的名稱前加上I


##interface ImyInterface              {…}4.在私有成員變數前面加上m_。對於m_後面的變數名稱使用駱駝命名方法



public class SomeClass              {     1        { ##            }6.自訂的例外類別加上字尾Exception




#5.對自訂的屬性類別加上後綴Attribute


7.方法的命名使用動詞----
物件對,例如ShowDialog()
8.有傳回值的方法的命名中要有回傳值的描述,例如GetObjectState()
9.使用帶有說明性的變數名a) 避免單字元的變數名,例如I或t等。使用類似index或temp這樣有意義的名字。
b) 對於public或protected類型的變數避免使用匈牙利表示法。
c) 不要縮寫單字(例如用num取代number)。

10.總是使用C#預先定義而不要使用System名稱空間中的別名,例如:
使用object而不是Object
使用string而不是String
使用int而不是int32

#11.在使用泛型的時候,類型的首字母要大寫。當處理.NET中的Type類型的時候,保留Type後綴。 (C#2.0 新功能)





//正確 

           public class LinkedList   #o#   #            //避免             //避免             public class LinkedList         名詞,例如產品名稱或公司名稱

13.避免以全限定方式使用型別名稱,使用using關鍵字。

14.避免在一個名稱空間中使用using關鍵字

15.把所有系統
框架
提供的名稱空間組織在一起,把第三方提供的名稱空間放到系統名稱空間的下方


using System;  
           using System.Collection.Generic;  
        System.Collection.Generic;  
       . using System.Data;  
           using MyCompany; (C#2.0新功能)

delegate void SomeDelegate();  

17.維護嚴格的程式碼縮排。不要使用tabs或非標準的縮進,例如一個空格。推薦的縮排是3到4個空格。

18.在和你的程式碼縮排處於同一個層級處為該行程式碼新增註解。

19.所有的註解都應該通過拼字檢查。註釋中的錯誤拼字意味著開發進度的延緩。

20.所有的類別成員變數應該被宣告在類別的頂部,並用一個空行把它們和方法以及屬性的宣告區分開

#delegate void SomeDelegate();  


#delegate void SomeDelegate();  
           public v  SomeDelegate someDelegate =SomeMethod;

public class MyClass  
           {      
           int m_Number;  public void SomeMethod1();  
           public void SomeMethod2();  
           }





#21.在最靠近一個局部變數被使用的地方宣告該局部變數。

22.一個檔案名稱應該能夠反映它所對應的類別名稱

23.當使用一個部分類別並將該類別分佈到不同的檔案中時,在每個檔案名末尾都加上該文件實現的部分在類別整體中所扮演的角色。例如:            {…}



// In MyClass.cs  
           public partial class MyClass  
        
           public partial class MyClass  



#24.總是要把花號「{」放在新一行的一行「{#編碼實作
:

1. 避免在同一個檔案中放置多個類別
2. 一個檔案應該只在一個名稱空間內定義類型。避免在一個檔案中使用多個名稱空間
3. 避免在一個檔案內寫多於500行的程式碼(機器自動產生的程式碼除外)
4. 避免寫超過25行程式碼的方法
5. 避免寫出超過5個參數的方法。如果要傳遞多個參數,請使用結構。
6. 一行不要超過80個字元
7. 不要手動去修改任何機器產生的代碼
a) 如果修改了機器產生的代碼,修改你的編碼方式來適應這個編碼標準
b) 盡可能使用partial classes特性,以提高可維護性。 (C#2.0新特性)
8. 避免對那些很直覺的內容作註解。程式碼本身應該能夠解釋其本身的含義。由可讀的變數名稱和方法名稱構成的優質程式碼應該不需要註解。
9. 註解應該只說明操作的一些前提假設、演算法的內部資訊等內容。 10. 避免對方法進行註解a) 使用充足的外部文件對
API
進行說明
b) 只有對那些其他開發者的提示資訊才有必要放到方法在等級的註解中來11. 除了0和1,絕對不要對數值進行硬編碼,透過宣告一個常數來取代該數值12. 只對那些亙古不變的數值使用
const關鍵字
,例如一週的天數。

13. 避免對唯讀(read-only)的變數使用const關鍵字。在這種情況下,直接使用readonly關鍵字


public class MyClass  
           {  
        readonly int Number;  
           public MyClass(int someValue)  
           {   ##  
           }

# 14. 對每一個假設進行斷言。平均起來,每5行應有一個斷言。


using System.Diagnostics;  

15. 每一行程式碼都應該以白盒測試的方式進行審讀。
16. 只捕捉那些你自己能夠明確處理的異常。
17. 如果在catch語句區塊中需要拋出異常,則只拋出該catch所捕捉到的異常(或基於該異常而創建的其他異常),這樣可以維護原始錯誤所在的堆疊位置。

           object GetObject()  
      
           Debug .assert(someObject!=null);


catch(Exception exception)  
           {  
         /或throw exception;
           }

#18. 避免使用回傳值作為

函數的錯誤代碼。 19. 避免
自訂異常類別20. 當自訂例外類別的時候:
a) 讓你自訂的例外類別從Exception類別
繼承 b) 提供自訂的序列化機制
21. 避免在一個程式集中(assembly)中定義多個
Main()方法。 22. 只把那些絕對需要的方法定義成public,而
其它的方法定義成internal。 23. 避免friend assemblies,因為這會增加程序集之間的耦合性。
24. 避免讓你的程式碼依賴執行在某個特定地方的組件。
25. 在application assembly(EXE client assemblies)中最小化程式碼量。使用類別庫來包含業務邏輯。
26. 避免明確指定枚舉的值

//正確 27. 避免為枚舉指定一個型別
           public enum Color  
  ,Blue  
           }

           //避免 
              Red=1,Green=2,Blue=3  
           }





##//避免 

           public enum Color:long              {              {              {  
         中中與中對點「 
           包含起來,哪怕只有一句語句也是如此。
29. 避免使用三元條件
運算子

30. 避免利用函數傳回的Boolean值作為條件語句。把回傳值賦給一個局部變量,然後再檢測。


Bool IsEverythingOK()              {…}  
           ///避免使用( #            { …}  

           //正確             bool ok=IsEverythingOK();   ## 



#31. 總是使用以零為基數的
陣列

32. 總是使用一個
for迴圈
明確的初始化一個
引用
成員的陣列:

public class MyClass            {}#            const int ArraySize=100;  
      Class     For (int index=0;index            {              {            array[index]=new MyClass()       中下# 

33. 使用屬性來取代public或protected類型的成員變數。
34. 不要使用繼承下來的new操作符,使用override關鍵字覆寫new的實作。
35. 在一個非密封(non-sealed)類別中,總是把那些public和protected的方法定義成virtual。
36. 除非為了和其它語言互動,否則絕對不要使用不安(unsafe)的程式碼。
37. 避免顯示類型轉換。使用as關鍵字安全性的轉換到另一個型別。

38. 在呼叫一個代理程式之前,總是檢查它是否為null。
Dog dog=new GermanShepherd();  
           GermanShepherd shepherd=dog.       { …}


39. 不要提供public的

事件
成員變數。改用Event Accessor。

Public class MyPublisher   43. 介面和類別中方法和屬性的比應該在2:1左右。


#Public class MyPublisher  
#            {  
#            MyDelegate_Some 1 ##            {  
           add  
           {
           m_SomeEvent+=value;  
           }  
             m_SomeEvent-=value;  
           }  
           }   # # #  

#40. 避免定義
事件處理
代理程式。使用EventHandler或GenericEventHandler。 41. 避免顯示觸發事件。使用EventsHelper安全的發布事件。 42. 總是使用介面。

44. 避免只有一個成員的介面。

45. 努力保證一個介面有3~5個成員。 46. 不要讓一個介面中成員的數量超過20,而12則是更實際的限制。 47. 避免在介面中包含事件。
48. 當使用
抽象類別
的時候,提供一個介面。
49. 在類別繼承結構中暴露介面。
50. 建議使用明確介面實作。
51. 從來不要假設一個型別支援某個介面。使用前總是要問一下。



SomeType obj1;  
#            ImyInterface obj2;      
   對 )        obj2=obj1 as ImyInterface ;  

           if(obj2!=null)              {      #            else              {  //避免             string name=”」; 
           //配備 





52. 不要硬編碼向使用者顯示的字串。要使用資源。
53. 不要硬編碼那些可能會隨發布環境變化而變化的字串,例如資料庫連接字串。
54. 使用String.Empty取代」”



  #    string name=””; 

 #            string name=String.Empty;


55. 使用一個長字串的時候,使用StringBuilder來取代string。
56. 避免在結構中提供方法
a) 參數化的建構子是鼓勵使用的
b) 可以重載運行符
57. 當聲明了表態成員的時候,總是要提供一個表態建構子。
58. 當早期綁定(early-binding)可能的時候就盡量不要使用遲綁定(late-binding)。
59. 讓你的應用程式支援追蹤和日誌。
60. 除了要在switch語句區塊中實現程式碼跳轉,不要使用goto關鍵字。
61. 總在switch語句的default情形提供一個斷言。

int number=SomeMethod();  
     

#int number=SomeMethod();  
           swith(number)  
               trace.WriteLine(“ Case 1:”)  
           break;  
           case 2:  
    ;  
           default:  
           debug.Assert(false);
           break;  
           }

62. 除了在一個建構子中呼叫它的建構子之外,請不要使用this。

#//Example of proper use of 'base'  
//Example of proper use of 'this'  
           public class MyClass  
   
{   }  
           public MyClass():this(“Hello”)  
           {   } ## 存取基底類別的成員,除非你在呼叫一個基底類別建構子的時候要決議一個子類別的名稱衝突


           public class Dog  

           {  
                   virtual public void Bark(int howlong)  

           {   }          public class GermanShepherd:Dog              {               public GermanShepherd(string name      override public void Bark(int howLong)  
           {  
           base.Bark( howLong)  
           }  
           }





64.請勿依賴使用.AddMem




#64.Pjdle.AddMemoryPory #6d基於《Programming .NET components》2/e中第四章的內容實作Disponse()和Finalize()方法。
67. 總是在unchecked狀態下運行程式碼(出於效能的原因),但是為了防止溢位或下溢操作,要果斷地使用checked模式。

Int CalcPower(int number,int power)  

           {  
        /1 ;=power;count++)  
           {  
           checked  
                 }  

           }              }              return  

#

68. 使用条件方法来取代显式进行方法调用排除的代码(#if…#endif)

public class MyClass
           {  
           [Conditional(“MySpecialCondition”)]  
           public void MyMethod()  
           {}  
           }

69. 不要在泛型接口中定义约束。接口级的约束通常可以利用强类型来替代。

Public class Customer  
           {}  
           //避免:  
           public interface Ilist where T:Customer  
           {}  

           //正确:  
           public interface IcustomerList:Ilist

70. 不要在接口上定义方法相关的约束。
71. 不要在代理上定义约束。
72. 如果一个类或方法提供了泛型和非泛型版本,那么优先选择泛型版本


#


#

以上是常用的asp.net 技巧總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn