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.

Virtual constructors.

// public virtual SampleObject(string name)  {  }

What would that even do? You must invoke a constructor with an explicit type name (new Foo()), how would a virtual constructor even work? There's no vtable you can use yet. This is pointless.

 

Virtual static methods.

// public static virtual DoSomething() { }

Same problem. Static methods are always invoked with a type name, not an insance, so no vtable, so no way to figure out which overridden method to use. Also pointless.

 

Virtual static constructors.

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

This one doesn't make any sense whatsoever, not from a technical point of view, and I don't see what kind of scenario they would enable even if it were possible, which it isn't.

 

Enumeration set operations.

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

Is doing "textBox.Anchors |= AnchorStyles.Right | AnchorStyles.Bottom;", which has the same effect, really so much harder?

 

Implementation through delegation.

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

Sounds intriguing. It's essentially aggregation, although you would need to have a way to at least provide some of the methods yourself, otherwise there's not much point in aggregating in the first place.

 

Static method extensions.

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

Could be useful if only to provide context for some methods. However, the syntax you give here is identical to that of regular extension methods (which are static methods on the class that defines them), and the use of the word "this" is confusing since static methods have no this pointer.

 

Property extensions.

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

Agreed. Note they are technically supported in IL, there's just no syntax for them yet.

 

Static property extensions.

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

Same argument as static extension methods: don't use the keyword this.

 

Type aliases.

// public typedef SomeItemList = List<SomeItem>;

Could be useful, but can also be confusing.

 

Expando properties and methods.

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

How Javascript. Tongue Out

 

Class references.

// public SomeItemClass = class of SomeItem;

 

Message based dynamic methods.

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