隨著Visual Studio 2017發佈之後,C# 7也同時發佈了。
C# 7 和 C# 6一樣,帶來都是比較偏幫助開發的時候寫起來更加簡潔的一些寫法,因此很容易就會想要使用來增加易讀性。
這個時候如果團隊使用的Visual Studio版本不同,容易就會發生編譯問題,以Visual Studio 2015來說,在編譯C# 7 就會出錯,那是否就不能夠用了呢?
範例 - out 參數
當我們需要呼叫方法的參數會回傳out的時候,通常來說都會需要先定義才能夠呼叫,例如:
int intValue; int.TryParse("1", out intValue); Console.WriteLine(intValue);
C# 7 有提供一種Syntax Sugar可以讓我們不用先定義參數,因此上面範例變成:
int.TryParse("1", out int intValue); Console.WriteLine(intValue);
問題
使用C# 7的out參數的確會讓整個寫起來變得更加簡潔,因此很容易就給他用下去了,但是當另外一個開發者使用Visual Studio 2015的時候就會出現編譯錯誤:
解決方式
因為VS 2015並不了解C# 7的語法,因此VS 2015在build的時候會顯示錯誤。
但是實際上C# 7同C# 6一樣,只是使用roslyn compiler編譯過就好,因此其實可以透過安裝roslyn的compiler來讓VS 2015編譯過去。
因此,只需要在專案加上 nuget package:
Install-Package Microsoft.Net.Compilers這個時候我們再看build結果:
會注意到 雖然build成功但是VS 2015還是會顯示有錯誤。
Visual Studio 2013編譯C# 6.0
其實VS 2013編譯C# 6也會有一樣的問題 - 也可以用同樣方式來解決。
結語
C# 7編譯上面差異只在於roslyn compiler,因此可以透過用安裝nuget方式安裝roslyn compiler達到在VS 2015也能編譯C# 7語法。
美中不足的地方是VS 2015上面還是會顯示有錯 - 這個目前沒有任何解法。
因此最好的開發體驗還是大家一起升級VS 2017是最好。
沒有留言 :
張貼留言