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访问保护修饰符。
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访问保护修饰符。



浙公网安备 33010602011771号