Feature | Example | C# | VB |
Auto-property initializers |
public int X { get; set; } = x; |
Added |
Exists |
Getter-only auto-properties |
public int Y { get; } = y; |
Added |
Added |
Ctor assignment to getter-only autoprops |
Y = 15 |
Added |
Added |
Parameterless struct ctors |
Structure S : Sub New() : End Sub : End Structure |
Added |
Added |
Using static members |
using System.Console; … Write(4); |
Added |
Exists |
Dictionary initializer |
new JObject { ["x"] = 3, ["y"] = 7 } |
Added |
No |
Await in catch/finally |
try … catch { await … } finally { await … } |
Added |
No |
Exception filters |
catch(E e) if (e.Count > 5) { … } |
Added |
Exists |
Partial modules |
Partial Module M1 |
N/A |
Added |
Partial interfaces |
Partial Interface I1 |
Exists |
Added |
Multiline string literals |
"Hello<newline>World" |
Exists |
Added |
Year-first date literals |
Dim d = #2014-04-03# |
N/A |
Added |
Line continuation comments |
Dim addrs = From c in Customers ' comment |
N/A |
Added |
TypeOf IsNot |
If TypeOf x IsNot Customer Then … |
N/A |
Added |
Expression-bodied members |
public double Dist => Sqrt(X * X + Y * Y); |
Added |
No |
Null propagation |
customer?.Orders?[5]?.$price |
Added |
Added |
String interpolation |
$"{p.First} {p.Last} is {p.Age} years old." |
Added* |
Planned |
nameof operator |
string s = nameof(Console.Write); |
Added* |
Planned |
#pragma |
#Disable Warning BC40008 |
Added |
Added |
Smart name resolution |
|
N/A |
Added |
ReadWrite props can implement ReadOnly |
|
Exists |
Added |
#region inside methods |
|
Exists |
Added |
Overloads inferred from Overrides |
|
N/A |
Added |
CObj in attributes |
|
Exists |
Added |
CRef and parameter name |
|
Exists |
Added |
Extension Add in collection initializers |
|
Added |
Exists |
Improved overload resolution |
|
Added |
N/A |