sysrpl said:

Virtual constructors.

// public virtual SampleObject(string name)  {  }

 

Virtual static methods.

// public static virtual DoSomething() { }

 

Virtual static constructors.

 // public static virtual SampleObject(string name)  {  }

 

Enumeration set operations.

// textBox.Anchors += { AnchorStyles.Right, AnchorStyles.Bottom };

 

Implementation through delegation.

// public class SomeItems : IList<SomeItem> { private List<SomeItem> items; private implements IList<SomeItem> GetList() { return items; }  }

 

Static method extensions.

// public static void DoSomething(this SomeType, string message);

 

Property extensions.

// public string FunnyName { this SomeType; get; set; }

 

Static property extensions.

// public static string FunnyName { this SomeType; get; set; }

 

Type aliases.

// public typedef SomeItemList = List<SomeItem>;

 

Expando properties and methods.

// instance.SomeNewProperty = 12; instance.SomeNewMethod = (string message) => MessageBox.Show(message);

 

Class references.

// public SomeItemClass = class of SomeItem;

 

Message based dynamic methods.

// public message(1) void DoSomething(ref MessageArgs messageArgs) { }

instance.

Type aliasing has been in C# since the beginning.

 

using StringList = System.Collections.List<System.String>;

 

the only problem with the syntax is that unless a type is specified with a keyword (string/int/etc) you must use the full type name, which gets tedious after a while. I'd prefer it if it respected existing namespace imports to resolve type names.