I come, I see, I conquer

                    —Gaius Julius Caesar

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::
C# 2.0 提供了静态类,在1.x中我们要实现静态类需要使用下面的代码。

1.0

public sealed class Class1
{
  
private Class1(){}
}

在C# 2.0中我们可以使用static class来更加优雅地解决这个问题。

public static class Class1
{
}

我们反编译一下,会了解其实现机制。

.class public abstract auto ansi sealed beforefieldinit Program
 extends 
object
{
}

原来编译器将该类声明为 abstract sealed,自然不能被继承被实例化了。
但是C#编译器并不允许我们在代码中直接声明一个abstract sealed类型,下面的代码无法通过编译。

public abstract sealed class Class1
{
}

静态类的限制

1. 静态类不能有实例构造器。
2. 静态类不能有任何实例成员。
3. 静态类上不能使用abstract和sealed修饰符。
4. 静态类默认继承自System.Object,不能显式指定任何其他基类。
5. 静态类不能指定任何接口实现。
6. 静态类的成员不能有protected或者protected internal访问保护修饰符。
posted on 2008-03-09 23:25  jcsu  阅读(984)  评论(0)    收藏  举报