C# 6.0のみにリリース
自動プロパティ初期化
public string text { get; set; } = "初期値";のように書ける。VBには存在。
静的名前環境のusing
using System.Console;WriteLine("Consoleを省略可能!");
setCursorPos(10,10);
のように書ける。これもVBには存在。
catchのでキャッチした例外によって条件分岐
try{ .. } catch ( MyException ex ) if ( ex.Count = 5 ) ...ッて感じでかける。 これも、VBには存在。
式木のメンバー化
public double Dist => Sqrt(x * x + y * y);なぜ、VBにはリリース予定にならないんだ!
VB 12.0のみにリリース
インデックス化されたメンバーの初期化
Dim someObject As JObject = New JObject With { $x = 10, $y = 8}逆にC#は対応していない
Select(Switch)文が更に進化
Typecase | Select Case o : Case s As String : … | ||
Guarded cases | Select Case i : Case Is > 0 When i Mod 2 = 0 |
Partial Module / Interface
ModuleはC#にないので、VBのみ。Partial InterfaceはC#には存在。
<newline>
VBの最も大きい短所と言ってもいい、改行が改善!Dim s As String = "ABC" + Enviroment.NewLine + "DEF"
Dim s As String = "ABC" + VbCrLf + "DEF"
と書いていたのが、
Dim s As String = "ABC<newline>DEF"
と書けるように!
#year-month-day#という文字列からDateへ変換
Dim date = #2020-1-14#と書くと、Dateに!
複数行コメント
使う人はよく使う?実装されるらしい。どうなるのかな?TypeOf ~ IsNot ~
題名の通り。Not(TypeOf ~ Is ~)もできるが。もっとわかり易くなる。NullableのTryCast
Dim l = TryCast(i , Long?)とできるように。え?出来なかったの?と思ってしまった。
+-,-=,/=,*=....
歓喜この調子で、++や--も・・・
Implicitly Implement
Class C Implicitly Implements Iッて感じ
NameOf
Dim s As String = NameOf(Console.WriteLine)ッて感じ。"WriteLine"か"System.Console.WriteLine"になるのか?
Strict Module
VBにはstatic class的なものがな~い!ということで実装なのかな?CIntが早くなる
エイゴヨメマセン#progma
夢が広がりング!If関数でNothingの代入
題名の通り。IF(true, some, Nothing)
C#でやると、
true ? some : null
C#/VBで両方にリリース
プライマリコンストラクタ
class someclass( int x ) {public int X { get; set; } = x;
}
Class SomeClass( x As Integer )
Public Property X As Integer = x
Get ... End Set
End Property
End Class
みたいな?
Getオンリーのプロパティの初期化
上記の様な感じDictionaryの初期化
できなかったっけ?Declaration expressions
int.TryParse( "3210", out var i );Integer.TryParse( "3210", ByVal Dim i )
ッて感じにかける。VBの書き方知らないので怪しい。
try/catch内のawait
Microsoftの技術力は恐ろしい。2進数でかく
0b000010ってなかんじ区切り文字
21_324_12832_231ッて感じに書けるようになるのかな?制約とかはわからない。初期化時にイベントの追加
Window win = new Window("Window") { Actived += (sender, e) => {} };Dim win As New Window("Window") With { AddHandler Actived, Sub(sender, e) ...}
って感じかな?VBの書き方はやっぱり知らないので怪しい。
Nullでもおk
customer?.Orders?[5]?.$priceという事が可能になる。
他にも4つありますが、全然情報ないので割愛します。
ほかのサイトでは、複数の型を戻り値にできるとかありましたが、CodeProjectのページには書かれていませんでした。しかし、とても…楽しみです。
CodePlexのページ : https://roslyn.codeplex.com/