After reading this old post from Clinton Begin (creator of iBatis) I really wonder if his claims about annotations vs. attributes are widely accepted or if there is disagreement about it.
His points are:
- Annotations are not extendable
- No support for positional arguments
- Java-unlike definition syntax
annotationis not a keyword (unlikeenum)
Do those claims have merit and how does C# improve on that?
Well taken one by one those points obviously have merit:
That doesn’t make Java’s implementation worse, since they had a different goal in mind: backwards compatibility. C# had the advantage of building the language from scratch (and then progressing forward instead of maintaining strict backwards compatibility).
As a nit-pick though, nothing you or I mentioned are part of C#, they are part of the .NET runtime and can be found equally well in VB.NET and F#.