有什么区别使得全类静态并使类的功能成为静态

时间:2011-01-21 07:02:06

标签: c#

大家好: 有什么区别使得全类静态并使类的函数成为静态? 我的意思是有任何性能问题吗?

2 个答案:

答案 0 :(得分:6)

静态类的特性仅在C#2中引入.CLR实际上并没有这样的概念。 C#中的静态类:

  • 没有构造函数,甚至不是默认的无参数构造函数
  • 密封:它不能分类
  • 是抽象的:你不能创建它的实例(也就是没有构造函数)
  • 只能包含静态成员
  • 不能用作参数或变量类型或泛型类型参数等。
  • 无法指定object
  • 以外的任何基本类型

使用“普通”类的静态成员和使用静态类中的静态成员之间没有性能差异。它主要是一种表达意图,即不应该提供此类的任何实例,而不必提供私有且从未调用的构造函数,并强制编译器检查您是否尝试将它用作普通类。

请注意,extension methods(在C#3中引入)只能在顶级非泛型静态类中声明。

答案 1 :(得分:1)

它有两个含义:

  1. 该类的所有方法也必须是静态的。

  2. 您无法在代码中的其他位置创建该类的实例。