Language feature implementation status

  • Exists: Already shipped in previous release
  • Done: Implemented for this release
  • Planned: Intended for this release
  • Maybe: Possibly intended for this release
  • Withdrawn: Probably not in this release
  • No: Not intended for this release
  • N/A: Not meaningful for this language

Please note that everything is still subject to change. Even if a feature is currently implemented, its design may still evolve as a result of feedback from its use.

The current CTP has the following features. For a description of each feature see :
Feature Example C# VB
Primary constructors class Point(int x, int y) { … } Done Maybe
Auto-property initializers public int X { get; set; } = x; Done Exists
Getter-only auto-properties public int Y { get; } = y; Done Done
Using static members using System.Console; … Write(4); Done Exists
Dictionary initializer new JObject { ["x"] = 3, ["y"] = 7 } Done Planned
Indexed member initializer new JObject { $x = 3, $y = 7 } Withdrawn Planned
Indexed member access c.$name = c.$first + " " + c.$last; Withdrawn Exists
Declaration expressions int.TryParse(s, out var x); Done Maybe
Await in catch/finally try … catch { await … } finally { await … } Done Planned
Exception filters catch(E e) if (e.Count > 5) { … } Done Exists
Typecase Select Case o : Case s As String : … No Maybe
Guarded cases Select Case i : Case Is > 0 When i Mod 2 = 0 No Maybe
Partial modules Partial Module M1 N/A Done
Partial interfaces Partial Interface I1 Exists Done
Multiline string literals "Hello<newline>World" Exists Done
Year-first date literals Dim d = #2014-04-03# N/A Done
Binary literals 0b00000100 Planned Planned
Digit separators 0xEF_FF_00_A0 Planned Planned
Line continuation comments Dim addrs = From c in Customers ' comment N/A Done
TypeOf IsNot If TypeOf x IsNot Customer Then … N/A Done
Expression-bodied members public double Dist => Sqrt(X * X + Y * Y); Planned No
Event initializers new Customer { Notify += MyHandler }; Planned Planned
Null propagation customer?.Orders?[5]?.$price Done Planned
Semicolon operator (var x = Foo(); Write(x); x * x) Maybe Maybe
Private protected private protected string GetId() { … } Withdrawn Withdrawn
Params IEnumerable int Avg(params IEnumerable<int> numbers) { … } Planned Planned
Constructor Inference new Tuple(3, "three", true); Maybe Maybe
String interpolation "\{p.First} \{p.Last} is \{p.Age} years old." Maybe Maybe
TryCast for nullable Dim x = TryCast(u, Integer?) Exists Planned
Delegate combination with + d1 += d2 Exists Planned
Implicit implementation Class C : Implicitly Implements I Exists Planned
nameof operator string s = nameof(Console.Write); Exists Planned
Strict modules Strict Module M Exists Planned
Faster CInt Dim x = CInt(Math.Truncate(d)) | Exists Planned
#pragma #Disable Warning BC40008 Exists Planned
Checked and Unchecked blocks Checked : x += 1 : End Checked Exists Maybe
Field targets on autoprops <Field: Serializable> Property p As Integer Planned Planned

Last edited Aug 18 at 11:23 PM by madst, version 28