当前位置:  开发笔记 > 编程语言 > 正文

IL中"specialname"和"rtspecialname"的目的和意义

如何解决《IL中"specialname"和"rtspecialname"的目的和意义》经验,为你挑选了1个好方法。

我现在特别想了解IL代码和C#内部,我写了一个简单的c#hello world程序,代码是:

using System;
class Program
{
    public static void Main()
    {
       Console.WriteLine("Hello World");
    }
}

这里是为Program类的构造函数生成的IL :

.method public hidebysig specialname rtspecialname 
        instance void  .ctor() cil managed
{
  // Code size       7 (0x7)
  .maxstack  8
  IL_0000:  ldarg.0
  IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
  IL_0006:  ret
} // end of method Program::.ctor

我无法理解是什么的意义和目的specialnamertspecialname或有什么用他们的?



1> Dan Field..:

根据ECMA 355标准:

rtspecialname表示该项目的名称对CLI具有特殊意义。当前没有定义的特殊类型名称;这是供将来使用。任何项目标rtspecialname也应标明specialname

specialname表示该项目的名称对于CLI以外的工具可能具有特殊的意义。参见,例如,分区I。

工具或运行时使用这些属性来确定属性或方法是否具有特殊用途或重要性-一个示例(SpecialNameAttribute允许使用哪些其他巧妙的技巧?)是为了标记操作符以防止与用户名称空间冲突。我在标准中看到的另一个是属性的获取器和设置器,看来Main您引用的方法是另一个示例。


尽管我将原始问题标记为重复,但该问题的范围略有不同,此处的答案可能会更加清楚。我还是希望。


如果其他人像我看起来一样密集,则rt =“运行时”。
推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有