2009-04-20 253 views
2

属性与使用评论(或签名级别的xml评论)相比有什么优势?我记得在某个地方在这个网站的C#部分看到一个线程,但我现在找不到它。属性vs评论

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

回答

4

评论只是为了开发人员的利益,以便他们能够看到什么类和方法。

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

是的,你可以使用属性参数,但根据我的经验,这使得一些复杂的代码,考虑重新设计,所以你的参数可以分组到一个结构或类。

这里有一个关于属性链接:

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

希望这有助于

1

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

事实上,属性和注释是两个完全不同的东西,并服务于两个完全不同的目的。

评论旨在提供线索给程序员阅读你的代码,而属性旨在提供提示编译器/运行“阅读”你的代码..

2

我不知道如何属性和评论有关;属性为类/对象添加了某些功能,而注释旨在成为在线文档。

可以使用属性(例如,使用Author(字符串名称)属性来表示类的作者等)来减轻元数据的添加,并且因此减轻了该元数据的提取,但是否则我没有看到比较。

+0

有时属性用于将信息添加到对象,但没有附加功能。就像您提供的作者(字符串名称)示例一样。这是我想到的唯一比较。 – dotnetdev 2009-04-20 08:21:07

1

当您计划以某种方式以编程方式处理源代码时(通常使用.NET反射),通常会使用属性。要对XML注释执行相同的操作,您必须为注释和解析的格式源文件,而且这个约定在编译时不能像属性那样容易地检查。

1

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

1

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

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

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

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