源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

.NET中的静态与非静态的区别分析

  • 时间:2020-02-04 03:08 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:.NET中的静态与非静态的区别分析
静态类 vs 普通类 静态类与普通类的区别有以下几点: 1)静态类无法实例化而普通类可以; 2)静态类只能从System.Object基类继承;普通可以继承其它任何非static和非sealed类,但也只能继承一个类; 3)静态类不能继承接口;普通类可以继承多个接口; 4)静态类只能包含静态成员;普通类可以包含静态和非静态成员; 5)静态类不能作为字段,方法参数和局部变量使用;普通类可以; 静态类的意义: 可以用静态类封装一组不与任何对象相关联的方法,如Math类,Console类。   静态构造函数 vs 实例构造函数 静态构造函数与实例构造函数的区别有以下几点: 1)静态构造函数属于类,在第一次用到该类时执行且只执行一次;实例构造函数属于对象,在每次初始化一个新对象的时候都会执行; 2)静态构造函数只能定义一次,且不能包含参数;实例构造函数可以定义重载,且可以包含参数; 3)静态构造函数只能访问类型的静态字段;实例构造函数可以访问类型的静态和非静态字段; 4)静态类不能包含访问修饰符,默认为private. 静态构造函数的意义: 设置类型的初始化,例如初始化类型需要的实例对象,为类型的静态字段赋值等。   静态方法 vs 实例方法 静态方法与实例方法的区别有以下几点: 1)静态方法属于类,通过类来调用;实例方法属于对象,通过对象来调用; 2)静态方法不能访问类的非静态成员; 静态方法的意义: 完成一个与特定对象无关的功能。   静态字段 vs 非静态字段 静态字段与非静态字段的区别: 静态字段属于类,通过类来调用;非静态字段属于对象,通过对象来调用。 静态字段的意义: 可以用静态字段来记录一些属于类本身的信息。   代码演示
[u]复制代码[/u] 代码如下:
public class Test      {          public int i = 10;          public static int j = 20;          public int k;          public Test()          {              Console.WriteLine("i is a non-static field, its value is {0}", i);              Console.WriteLine("j is a static field, its value is {0}", j);          }          public Test(int k)          {              this.k = k;              Console.WriteLine("i is a non-static field, its value is {0}", i);              Console.WriteLine("j is a static field, its value is {0}", j);              Console.WriteLine("k is a non-static field, its value is {0}", k);          }          static Test()          {              Console.WriteLine("I am a static constructor, I couldn't contain any parameters!");              Console.WriteLine("I couldn't access to the non-static field i, I can only access to the static field j, the value of j is {0}", j);          }          public void Print()          {              Console.WriteLine("I am a instance method, I can access both the non-static field and the static field!");              Console.WriteLine("The value of i is {0} and the value of j is {1}", i, j);          }          public static void StaticPrint()          {              Console.WriteLine("I am a static method, I couldnt access to the non-static field i,  I can only access to the static field j, the value of j is {0}", j);          }      }
运行结果 [img]http://files.jb51.net/file_images/article/201303/201332785515155.png[/img] 从运行结果可以看出,在Main方法中创建了两个Test对象,静态构造函数只执行了一次,且先于实例构造函数执行,实例构造函数在两次实例化过程中各执行了一次。同时可以看到我们是通过Test.j来调用的j字段,而i字段和k字段的调用则通过Test的两个对象t1和t2调用。同样的,静态方法StaticPrint也是用Test类来调用,而实例方法Print通过Test类的对象来调用。 Fighting like Allen Iverson! Never never give up!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部