C#的属性是否比Java的注释更好?

时间:2011-09-15 13:55:49

标签: c# java attributes annotations language-design

在阅读了这篇old post from Clinton Begin(iBatis的创造者)后,我真的想知道他对注释与属性的主张是否被广泛接受,或者是否存在分歧。

他的观点是:

  • 注释不可扩展
  • 不支持位置参数
  • Java-different definition syntax
  • annotation不是关键字(与enum不同)

这些声明是否有价值,C#如何改进?

1 个答案:

答案 0 :(得分:4)

这些观点一点一点地明显有价值:

  • 属性是您可以根据需要扩展和查询的类。你甚至可以自己添加!
  • 使用C#确实可以使用位置参数(我猜你的意思是命名参数),并且支持完整的Intellisense。
  • 无法评论它看起来多么奇怪,虽然来自Razor它让我想到了宏观扩张。
  • 属性也没有关键字,它们只是一个普通的类。

这不会使Java的实现变得更糟,因为它们有一个不同的目标:向后兼容性。 C#具有从头开始构建语言的优势(然后向前推进而不是保持严格的向后兼容性)。

作为一个挑剔的例子,你或我提到的任何东西都不是C#的一部分,它们是.NET运行时的一部分,在VB.NET和F#中同样可以找到。