属性对注释(或签名级别的xml注释)的使用有哪些优势?我记得在某个地方的C#部分找到了一个帖子,但我现在找不到它。
另外,是否可以将属性应用于方法中的特定参数(这是我在某处读过的访谈问题)?
答案 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:
以在汇编级别应用属性。