Geo*_*ett 6 c# compiler-construction language-features attributes
的ConditionalAttribute可用于除去呼叫取决于所定义的编译器的符号的显着方法.我假设我们不能自己创建这个类,因为编译器必须专门寻找它.
我想知道编译器或语言使用的其他类是什么,我们无法自己编码.
除了提到的那些;
AttributeUsageAttribute
Run Code Online (Sandbox Code Playgroud)
有特殊的编译器支持,因为它限制(在编译时)如何应用属性
ObsoleteAttribute
Run Code Online (Sandbox Code Playgroud)
编译器也使用它来警告或使用错误.
我怀疑,从技术上讲,你可以自己编写所有这些 - 只要你编写自己的核心库和System.dll; p编译器通常会寻找模式/签名,因为它必须满足不同的运行时 - 实际上您不必使用MS核心库.的行为,但是,由编译器,而不是类定义的-所以你不能让它做什么不同.
编译器寻找[ExtensionAttribute]指示扩展方法(以及包含扩展方法的类)。
[DynamicAttribute]用于指示应将成员视为类型dynamic(即使成员类型本身只是object)
[InternalsVisibleTo]允许一个程序集访问另一程序集的内部成员。
基本上查看System.Runtime.CompilerServices命名空间,并检查其中的属性...其中许多属性将由编译器专门处理,即使它不是 C# 编译器(例如,DateTimeConstantAttribute据我所知,C# 编译器不使用这些属性) ,但是DecimalConstantAttribute确实如此。C# 编译器可能会消耗常量值DateTime,即使它不会生成它们...)
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |