非静态类是没有加static的方法或属性,都必须先实例化,再通过实例名.方法名或实例名.属性来访问,每一次实例化都开辟一个新的内存空间;静态类加static的方法或属性,可以直接通过类名.方法或类名.属性来访问,在程序加载时占用内存空间。

解决方案 »

  1.   

    请看 via clr C# 这本书
      

  2.   

    非静态类,就是一般的类,从C# 1.0开始就有
    静态类,不能继承、实例化和拥有参数构造函数的类,从C# 2.0开始支持
    动态,其实没有动态类这个概念,只是C#编译器不作静态的检查和绑定,从C# 4.0开始支持总结,静态类是特殊的类,动态对象也是特殊的类。
      

  3.   


    错。非静态类可以拥有静态成员,并且不需要实例化就可以调用:
    class A { public static void foo() { Console.WriteLine("A.foo"); } }
    可以直接调用A.foo();甚至根本没有创建任何一个A的实例。错,同上静态类是特殊的类,特殊在哪里?它包含三个修饰,抽象的abstract,最终的sealed和不能包含带参构造函数。换言之,一个普通的类加上这3个特性,它就是静态类。
      

  4.   

    如果lz是自学,没有很专业的人士指点,不建议lz去钻研这些概念,你可以看到,能正确告诉你这些问题答案的人少之又少,网上大多数人都是以讹传讹。你学了半天也就是学了些自相矛盾的东西,而且你根本无从鉴别哪些观点是对的,哪些是错的。即便告诉你正确答案,你也是一知半解,在没有背景知识和基础的情况下,你的理解和记忆会产生偏差,最终你还是未必能长进点什么。我觉得学习编程和学习自然语言类似的地方在于,应该先“用”,特别地,用你熟悉的语法去编写程序,在这个过程中不断积累新的语法,到时候自然会理解一些比较抽象的概念。一开始的帖子我就告诉你了,学校老师关心的东西并不是最重要的东西,他们之所以在学校当老师,就是因为他们自鸣得意地研究一些所谓的概念(其实他们自己也一知半解),而根本不会写程序。明白学什么,比明白具体的知识更重要。
      

  5.   

    请看 via CLR in C# 这本书