属性与评论

时间:2009-04-20 08:10:20

标签: .net attributes

属性对注释(或签名级别的xml注释)的使用有哪些优势?我记得在某个地方的C#部分找到了一个帖子,但我现在找不到它。

另外,是否可以将属性应用于方法中的特定参数(这是我在某处读过的访谈问题)?

6 个答案:

答案 0 :(得分:4)

评论只是为了开发人员的利益,因此他们可以看到哪些类和方法。

属性对您正在开发的解决方案很有用,因为您可以使用它来描述如何使用要添加属性的类。

是的,您可以对参数使用属性,但根据我的经验,这会产生一些复杂的代码,请考虑重新设计,以便将params分组为结构或类。

以下是有关属性的链接:

http://en.csharp-online.net/Attributes

希望这有帮助

答案 1 :(得分:2)

我不明白属性和评论是如何相关的;属性为类/对象添加某些功能,而注释则是在线文档。

可以使用属性简化元数据的添加(例如,使用Author(字符串名称)属性来表示类的作者等),从而简化了元数据的提取,但是否则我不喜欢看不出比较。

答案 2 :(得分:1)

Attributes可以在运行时访问,而不是注释的情况。

事实上,属性和注释是两个完全不同的东西,并且有两个完全不同的用途。

注释旨在为程序员提供读取代码的提示,而属性旨在为编译器/运行时“读取”代码提供提示。

答案 3 :(得分:1)

通常,当您计划以某种方式以编程方式处理源代码时(通常使用.NET反射),将使用属性。要对XML注释执行相同操作,您必须对注释的格式有一个特殊约定并解析源文件本身,并且在编译时无法像属性那样轻松检查该约定。

答案 4 :(得分:1)

自定义属性应在运行时使用反射进行访问。它们可以应用于方法参数以及泛型类型参数,方法返回类型,程序集,类型声明,类型成员和模块。

答案 5 :(得分:1)

一般来说,您无法比较XML注释的属性。后者最终与代码完全无关,而属性保留在元数据部分的编译程序集中。

关于你问题的第二部分,这确实是可能的:

[return:MySecondAttribute] void Foo([MyAttribute] int bar)

此处MySecondAttribute应用于返回值,MyAttribute应用于参数bar。将return:替换为assembly:以在汇编级别应用属性。