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. 
Class references.
// public SomeItemClass = class of SomeItem;
Message based dynamic methods.
// public message(1) void DoSomething(ref MessageArgs messageArgs) { }
Not sure what you mean by these.
EDIT: The C9 editor screwed up all the quotes. Yay...
Thread Closed
This thread is kinda stale and has been closed but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.