當咱們想知道執行一段代碼所耗費的時間時,須要藉助於.NET 框架的Stopwatch類,像下面這樣:express
class Program
{static void Main(){// Create new stopwatch
Stopwatch stopwatch = new Stopwatch();
// Begin timing
stopwatch.Start();// Do something 這裏是須要測試的耗費時間的代碼
for (int i = 0; i < 1000; i++){Thread.Sleep(1);}// Stop timing
stopwatch.Stop();// Write result
Console.WriteLine("Time elapsed: {0}",stopwatch.Elapsed);
}}咱們須要手工的在須要測試執行時間的代碼斷開始和結束位置增長代碼Stopwatch類,而後調試時查看代碼的執行時間。
Visual Studio 2015引入新的性能提示功能,以下圖所示,當調試一個段代碼時,放置二個斷點,當調試到第二個斷點的地方時,Visual Studio會顯示從上一個斷點執行
到此執行斷點時所耗費的時間:
執行一段代碼調用,在代碼調用的完成以後,也能夠顯示調用這段代碼所耗費的處理器時間:
當Visual Studio的智能感知後臺檢測代碼發現問題時,它會提示該代碼有問題,而且提供解決此問題的建議方法。這個功能有點像是抄襲Resharper的,Resharper很早的版本就具有這樣的功能。有兩種氣泡提示瀏覽器
語法錯誤修正框架
如上圖所示,當前類型中沒有定義activyName這個變量或是屬性,因此Visual Studio對此語法錯誤產生三個提示:編輯器
A 在當前類型中增長變量定義ide
B 在當前類型中增長只讀的變量定義函數
C 在當前類型中增長屬性工具
代碼重構建議佈局
以下圖所示的代碼例子,第一的變量定義resultList能夠忽略定義,在第二行代碼中直接用tempResults.ToList() 來替代。性能
在個人開發環境中,安裝Visual Studio以後必備的第三方插件是Resharper,這個功能在Resharper很早就出現了。測試
Visual Studio有一套默認的佈局方案,若是將佈局調整屢次後還想回到初始的界面佈局,只能調用Window菜單下的Reset Window Layout恢復到安裝後的狀態。
佈局一般是指解決方案瀏覽器的位置,寬度,輸出窗口的位置和高度等信息,這此信息被Visual Studio保存着,只保留最新的一次佈局。
Visual Studio 2015引入了佈局保存方案,用戶能夠保存這些佈局信息,以方便切換任務時調用不一樣的佈局方案。
當須要重命名一個變量時,能夠右鍵單擊變量名稱選擇重命名或是按F2快捷鍵,Visual Studio 用綠色字高亮標識出當前文件中用到此變量的地方,同時在當前編輯器的右上角顯示
引用到此變量的其它文件,能夠預覽重命名後的變化。
此功能能夠看做是Visual Studio 重構中重命名變量功能的改善。Resharper的重命名功能比這個方便不少。
Visual Studio 改善了基於條件表達式斷點的條件設置界面,以下圖所示,Visual Studio 2013中顯示的自Visual Studio發佈以來的經典的斷點設置界面。
下圖是Visual Studio 2015中的斷點的條件表達式設置界面,當條件符合時,還能夠增長方法,以下圖中所示的將自定義消息輸出到Output窗口。
關於Visual Studio的條件表達式,推薦一個很是不錯的插件,OzCode,它以圖形化的方式顯示各類條件的表達式及其運算結果,極大的方便了程序調試。
Visual Studio 2015的斷點還支持撤消功能,若是不當心刪除一個斷點,點撤消(Ctrl+Z)可恢復此斷點。
先看一下Visual Studio 2013中的錯誤輸出窗體的界面:
再看Visual Studio 2015中的錯誤輸出窗體:
Visual Studio 2015增長了編譯器編譯報錯的錯誤代碼,如上圖中的CS0219,這樣方便查閱MSDN相應的編譯問題重現便可快速修復錯誤問題。
輸出窗口的Code 列,CS開頭的表示編譯錯誤,CA開頭的表示代碼分析。
在調試代碼時,在即時窗口中直接輸入一個表達式,Visual Studio會對此表達式求值並返回結果。Visual Studio 2015的即時窗口如今支持Lambda表達式和LINQ查詢。
Visual Studio 2015提供圖形化的NuGet包操做工具,支持包搜索,選擇項目須要引用的包是能夠選擇版本。
這個改善可讓NuGet生手擺脫對命令不熟悉的恐懼感。
Console類有一個WriteLine方法,如今能夠直接在代碼中調用WriteLine方法而不用加Console類型名稱,以下圖所示:
有點像C++語言的全局函數,若是WriteLine方法在多個類型中有定義,而且這幾個類型都有加靜態引用(statis using),編譯時仍然會報錯。
方法體爲Lambda表達式
public override string ToString () => string.Format("{0},{1}",x,y) ;
屬性定義爲Lambda表達式
public double Distance=> Math.Sqrt(X*X + Y *Y) ;