今天在写代码时,顺手把一个static 类前面加上sealed关键字,结果编译时报错:” 类不能既是静态的又是密封的“。很是纳闷,sealed字段修饰类不是代表该类不能被继承吗,于是我去掉sealed关键字,生成一个dll。然后用Reflector查看了这个这个类的IL,结果发现如下情况:

public static class Utility 被翻译成下面的代码了

.class public abstract auto ansi sealed beforefieldinit Utility      extends [mscorlib]System.Object
 
 我想应该是static编译成IL时翻译成了abstract auto ansi sealed,在类前面再加一个sealed那就多余了,然后我查了下资料
 发现static类必须直接从System.Object继承,不实现任何接口,因为接口方法只能通过类的实例来调用;到这里我也明白了个大概了. 后来在博客园搜索了下,发现有人已经在http://kb.cnblogs.com/a/1052558/这篇文章里研究过了这个问题。
 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-04-02
  • 2021-10-19
  • 2021-09-30
  • 2022-12-23
  • 2022-12-23
  • 2021-10-07
猜你喜欢
  • 2021-11-04
  • 2021-07-15
  • 2022-12-23
  • 2021-07-25
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案