小问题【6】

静态成员

静态字段:使用static关键字定义静态字段,如果不对静态字段进行初始化,静态字段将字段获得默认值(0、null、false)。

静态字段从属于类本身,而不是实例。从类的外部访问时,需要使用类名。在类自身内部的代码总,可以省略类名。

C#不能在同一个类中定义同名的静态字段和实例字段。重复的名称在声明空间中会造成冲突。

静态方法:

    this关键字在静态方法中是无效的。

静态构造器:  对类(不是类实例)进行初始化。“运行时”会在首次访问类是自动调用静态构造器。

在静态构造器中进行的赋值优先于声明字段时进行的赋值,即结果是静态构造器中的值。

在声明的同时完成静态初始化,性能比使用静态构造器高,尽量用前者,因为后者会自动插入一些负责检查的代码。

示例代码:

  class Program
  {
    static void Main()
    {
      Console.WriteLine(Employee.NextId); //100
      Console.ReadKey();
    }
  }
  class Employee
  {
    static Employee()
    {
      NextId = 100;
    }
    public static int NextId =42;
  }

静态属性:  使用静态属性几乎肯定要比使用公共静态字段好,因为公共静态字段在任何地方都能调用,而静态属性则至少提供了一定程度的封装。

示例代码:

  class Employee
  {
    public static int NextId
    {
      get
      {
        return _NextId;
      }
      private set
      {
        _NextId = value;
      }
    }
    public static int _NextId =42;
  }


静态类:

    这个类不包含任何实例字段(或方法)。静态类的作用:1. 防止程序员写代码来实例化这个类;2.防止在类的内部声明任何实例字段或方法。 3. 这个类是不可扩展的,C#编译器会在CIL代码中把它标记为abstract 和 sealed。

原文地址:https://www.cnblogs.com/wouldguan/p/2407001.html