C# ComVisible()与ComVisibleAttribute()的比较

C# ComVisible()与ComVisibleAttribute()的比较,c#,attributes,comvisible,C#,Attributes,Comvisible,使用[ComVisible()]和[ComVisibleAttribute()]有什么区别?他们做完全相同的事情,那么有什么区别呢 谢谢。NET中的通用约定是结束所有属性类,后缀为attribute-因此实际类名为ComVisibleAttribute。这符合扩展类并将其名称保留为后缀的最佳实践 然而,这会使属性名变得冗长而笨拙,并用大量的样板词将代码弄乱。这就是为什么C#编译器知道,当指定属性时,它会同时搜索给定的显式名称,如果找不到,它会将属性附加到该属性上 如果您检查代码的编译源代码,您将

使用
[ComVisible()]
[ComVisibleAttribute()]
有什么区别?他们做完全相同的事情,那么有什么区别呢


谢谢。

NET中的通用约定是结束所有属性类,后缀为
attribute
-因此实际类名为
ComVisibleAttribute
。这符合扩展类并将其名称保留为后缀的最佳实践

然而,这会使属性名变得冗长而笨拙,并用大量的样板词将代码弄乱。这就是为什么C#编译器知道,当指定属性时,它会同时搜索给定的显式名称,如果找不到,它会将
属性
附加到该属性上


如果您检查代码的编译源代码,您将看到
[ComVisible]
[ComVisibleAttribute]
编译为完全相同的内容。编译器只是给了我们一些语法上的糖分,以避免在任何地方看到单词Attribute。

在.NET中的常见约定是用后缀
Attribute来结束所有属性类,因此实际的类名是
ComVisibleAttribute
。这符合扩展类并将其名称保留为后缀的最佳实践

然而,这会使属性名变得冗长而笨拙,并用大量的样板词将代码弄乱。这就是为什么C#编译器知道,当指定属性时,它会同时搜索给定的显式名称,如果找不到,它会将
属性
附加到该属性上

如果您检查代码的编译源代码,您将看到
[ComVisible]
[ComVisibleAttribute]
编译为完全相同的内容。只是编译器给了我们一些语法上的糖分,以避免在任何地方看到单词属性