项目中静态和非静态常被用到,什么时候需要用静态的,什么时候需要使用非静态,以及他们的区别是什么?

静态和非静态的不同地方,就是静态从程序一启动就会一直占用内存,而非静态只有在实例化的时候才会分配内存,每实例化一次对象都会重新分配一次内存。比如数据库连接类,因为经常使用到,所以使用Static,定义成静态类是最合适的。如果定义成非静态方法,每次调用的时候都会实例化,这样占用内存就会非常大。再比如登录后台的方法,只在登陆的时候调用一次登录方法,定义成非静态方法是比较合适的。总之就是经常被调用的就用静态的,反之使用非静态。现在好多公司的项目都会使用静态,内存换时间也是一种方式。毕竟目前增加内存的方式也有很多方式,而且成本也可以接受,只希望程序处理时间缩短,增加用户体验。

二、静态类

静态类和非静态类的重要区别在于静态类不能实例化,也就是说静态类不能通过new创建静态类型的实例。在声明一个类时使用static关键词有两方面的含义:防止程序员实例化该静态类,防止在静态类里面定义所有的实例字段和方法。非静态类可以包含静态的方法、字段、属性或事件。即使没有创建类的实例,也可以调用该类中的静态成员。   

1、静态类的主要特征

  • 仅包括静态成员;
  • 无法实例化;
  • 静态类有抽象类和密封类的特点,无法被实例化和无法被继承;
  • 不能包括实例构造函数;

2、静态类的构造函数解析

静态构造函数是C#的一个新特性,其实好像很少用到。不过当我们想初始化一些静态变量的时候就需要用到它了。这个构造函数是属于类的,而不是属于哪个实例的,就是说这个构造函数只会执行一次。静态构造函数由.NET自动调用。

  • 静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。
  • NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。
  • 一个类只能有一个静态构造函数。
  • 如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。

3、静态类的生命周期生命周期

当加载引用静态类的程序时,.NET Framework 公共语言运行时 (CLR) 将加载该静态类的类型信息,程序不能指定加载静态类的确切时间。但是,可以保证在程序中首次引用该类前加载该类,初始化该类的字段并调用其静态构造函数。 静态构造函数仅调用一次,在程序驻留的应用程序域的生存期内,静态类一直保留在内存中。也就是说,当页面第一次被访问的时候,相当于页面被构造,静态变量被静态构造器初始化,然后再次访问这个页面的时候,虽然非静态资源重新被构造,但是此时静态资源并不被重新构造并一直存在。

C#基础知识之静态和非静态
public static class StaticStudent
    {
        private static string _name;
        private static int _age;
        static StaticStudent()
        {            
        }
        
        public static string Name
        {
            get { return _name; }
            set
            {
                _name = value;
            }
        }

        public static int Age
        {
            get { return _age; }
            set
            {
                _age = value;
            }
        }
    }
View Code

相关文章:

  • 2021-06-26
  • 2021-06-12
  • 2022-12-23
  • 2021-10-21
  • 2022-12-23
  • 2022-03-01
  • 2022-01-18
  • 2021-07-18
猜你喜欢
  • 2021-06-17
  • 2021-05-06
  • 2022-12-23
  • 2021-09-09
  • 2021-07-11
相关资源
相似解决方案