RT

解决方案 »

  1.   

    补充一点点
    静态类只允许包含静态成员,静态构造函数,静态方法,属性,事件,且不可被继承,相当于加了sealed关键字
      

  2.   

    在C#中很少把一个class定义成staic的,楼上几位的回答可能没看清题目。C#中的 static class 常用于定义扩展方法,如public static XXXXExtensions{
       public static string XXXXMethod( this string XXX , string XX ){
          ...
       }
    }
    理解 static 要从 概念 和 应用 两个角度来看。
    从面向对象的角度来看, 对象的实例表示的是 个体, 而static的属性和方法则表示 全体所共有的方法和属性 , 如“会员张三”、“会员李四”是“会员”的两个个体, 昵称、等级是他们各自不同的属性,而 会员总数、注册新会员 则是 全体会员所共享的属性和方法。 双比如 “圆”这个class, 半径、面积、周长是 个体的属性,而圆周率PI则是共性。从应用的角度来看,楼上的都已经说了,本质就是为了节省内存,在内存中只有一个引用。
    在C#中,如果不是用于定义扩展方法,用 static 修饰 class 的很少见,
    如果修饰了,则只能是// 不是 public
    static class ClassA{
      // 只能定义 static 方法
      public static string MethodXXX(..){
        ...
      }
      // 构造函数也是 static
      static AClass(){  }
       // 属性也只能是 static
      public static string PropertyA{get;set;}
    }
    静态类
    http://msdn.microsoft.com/zh-cn/library/79b3xss3(v=VS.80).aspx
    --------------------------------------------------------------------------------类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR) 自动加载。使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。静态类的主要功能如下:•它们仅包含静态成员。•它们不能被实例化。•它们是密封的。•它们不能包含实例构造函数(C# 编程指南)。因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。
      

  3.   

    工具类...MSDN说的很清楚了,“例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。”...例如,System.Math类...
      

  4.   

    简单的说,本身不支持用static,不用说那么复杂。用了static 的话传值起来比较简单。可是static在内存中占有一定的空间,做系统的话安全性不是很好。