1 性能提示 Performance Tips
當我們想知道執行一段代碼所耗費的時間時,需要借助於.NET 框架的Stopwatch類,像下面這樣:
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會顯示從上一個斷點執行
到此執行斷點時所耗費的時間:
執行一段代碼調用,在代碼調用的完成之后,也可以顯示調用這段代碼所耗費的處理器時間:
2 快速代碼編寫提示 Quick Action Light Bubble Icon
當Visual Studio的智能感知后台檢測代碼發現問題時,它會提示該代碼有問題,並且提供解決此問題的建議方法。這個功能有點像是抄襲Resharper的,Resharper很早的版本就具備這樣的功能。有兩種氣泡提示
語法錯誤修正
如上圖所示,當前類型中沒有定義activyName這個變量或是屬性,所以Visual Studio對此語法錯誤產生三個提示:
A 在當前類型中增加變量定義
B 在當前類型中增加只讀的變量定義
C 在當前類型中增加屬性
代碼重構建議
如下圖所示的代碼例子,第一的變量定義resultList可以忽略定義,在第二行代碼中直接用tempResults.ToList() 來替代。
在我的開發環境中,安裝Visual Studio之后必備的第三方插件是Resharper,這個功能在Resharper很早就出現了。
3 自定義窗體布局 Window Layout
Visual Studio有一套默認的布局方案,如果將布局調整多次后還想回到初始的界面布局,只能調用Window菜單下的Reset Window Layout恢復到安裝后的狀態。
布局通常是指解決方案瀏覽器的位置,寬度,輸出窗口的位置和高度等信息,這此信息被Visual Studio保存着,只保留最新的一次布局。
Visual Studio 2015引入了布局保存方案,用戶可以保存這些布局信息,以方便切換任務時調用不同的布局方案。
4 簡化重命名 Simplified Rename
當需要重命名一個變量時,可以右鍵單擊變量名稱選擇重命名或是按F2快捷鍵,Visual Studio 用綠色字高亮標識出當前文件中用到此變量的地方,同時在當前編輯器的右上角顯示
引用到此變量的其它文件,可以預覽重命名后的變化。
此功能可以看作是Visual Studio 重構中重命名變量功能的改善。Resharper的重命名功能比這個方便很多。
5 斷點設定改善 break point improvement
Visual Studio 改善了基於條件表達式斷點的條件設置界面,如下圖所示,Visual Studio 2013中顯示的自Visual Studio發布以來的經典的斷點設置界面。
下圖是Visual Studio 2015中的斷點的條件表達式設置界面,當條件符合時,還可以增加方法,如下圖中所示的將自定義消息輸出到Output窗口。
關於Visual Studio的條件表達式,推薦一個非常不錯的插件,OzCode,它以圖形化的方式顯示各種條件的表達式及其運算結果,極大的方便了程序調試。
Visual Studio 2015的斷點還支持撤消功能,如果不小心刪除一個斷點,點撤消(Ctrl+Z)可恢復此斷點。
6 錯誤輸出改善 error list improvement
先看一下Visual Studio 2013中的錯誤輸出窗體的界面:
再看Visual Studio 2015中的錯誤輸出窗體:
Visual Studio 2015增加了編譯器編譯報錯的錯誤代碼,如上圖中的CS0219,這樣方便查閱MSDN相應的編譯問題重現即可快速修復錯誤問題。
輸出窗口的Code 列,CS開頭的表示編譯錯誤,CA開頭的表示代碼分析。
7 即時窗口中支持Lambda表達式和LINQ查詢 Lambda expression and linq support in immediate window
在調試代碼時,在即時窗口中直接輸入一個表達式,Visual Studio會對此表達式求值並返回結果。Visual Studio 2015的即時窗口現在支持Lambda表達式和LINQ查詢。
8 NuGet 包管理器改善 NuGet Package Manager improvement
Visual Studio 2015提供圖形化的NuGet包操作工具,支持包搜索,選擇項目需要引用的包是可以選擇版本。
這個改善可以讓NuGet生手擺脫對命令不熟悉的恐懼感。
9 靜態引用 static using
Console類有一個WriteLine方法,現在可以直接在代碼中調用WriteLine方法而不用加Console類型名稱,如下圖所示:
有點像C++語言的全局函數,如果WriteLine方法在多個類型中有定義,並且這幾個類型都有加靜態引用(statis using),編譯時仍然會報錯。
10 屬性或方法可用Lambda表達式實現 Implement Methods and Properties with Lambda Expressions
方法體為Lambda表達式
public override string ToString () => string.Format("{0},{1}",x,y) ;
屬性定義為Lambda表達式
public double Distance=> Math.Sqrt(X*X + Y *Y) ;