c# - 是 C#'s attributes better designed than Java' 的注释吗?

标签 c# java attributes annotations language-design

<分区>

看完这篇old post from Clinton Begin (iBatis 的创建者)我真的很想知道他关于注释与属性的主张是否被广泛接受或者是否存在分歧。

他的观点是:

  • 注解不可扩展
  • 不支持位置参数
  • 不同于 Java 的定义语法
  • annotation 不是关键字(不像enum)

这些说法是否有道理,C# 对此有何改进?

最佳答案

一个一个地看,这些要点显然是有值(value)的:

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

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

不过,作为一个挑剔的人,你或我提到的都不是 C# 的一部分,它们是 .NET 运行时的一部分,并且在 VB.NET 和 F# 中同样可以找到。

关于c# - 是 C#'s attributes better designed than Java' 的注释吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7432047/

相关文章:

c# - Code First ASP.NET MVC 应用程序,未调用种子方法

c# - user.identity.name (c#) 从哪里获得它的值(value)?

c# - 服务定位器模式——如何处理同一服务接口(interface)的多个实现

java - JSF 支持 Bean 单元测试

java - Spring Integration AMQP - 消息偶尔未确认,需要超时吗?

java - OpenGL:是否可以环绕顶点缓冲区?

attributes - 如何访问 EMF 模型的某些 EStructuralFeatures?

c# - 使用 C# 中的 Windows 服务从 FTP 服务器复制并删除文件

c# - 从属性继承

java - Spring JSON数据未异步返回