34.C# 类的静态成员

摘要


使用 static 关键字把类成员定义为静态的。当我们声明一个类成员为静态时,意味着无论有多少个类的对象被创建,只会有一个该静态成员的副本。

关键字static表示该类仅存在成员的一个实例。静态变量用于定义常量,因为可以通过调用该类而不创建实例来检索其值。静态变量可以在成员函数或类定义之外初始化。您也可以在类定义中初始化静态变量。

正文


静态成员是属于类所有的,调用时,直接使用类名调用

创建一个Stock库存类,做一个计数功能,就可以用static在声明一个变量

public class Stock{    public static int Qty { get; set; }    public string PartNo { get; set; }    public string PartName { get; set; }}

调用

Stock stock= new Stock();stock.In(1);stock.In(2);stock.In(3);stock.Out(1);Console.Write(Stock.Qty);

静态类

静态类中定义的成员必须是静态的,不能定义实例变量、实例方法或者实例构造函数

public static class Stock{    public static int Qty { get; set; }    public static void In(int qty)    {        Qty += qty;    }    public static void Out(int qty)    {        Qty -= qty;    }}
Stock.In(1);Stock.In(2);Stock.In(3);Stock.Out(1);Console.Write(Stock.Qty);
public void In(int qty){    Qty += qty;}public void Out(int qty){    Qty -= qty;}
Stock.Qty = 10;Stock stock1 = new Stock();stock1.PartNo = "A001";stock1.PartName = "A";stock1.In(20);Console.WriteLine(Stock.Qty);Stock stock2 = new Stock();stock2.PartNo = "A001";stock2.PartName = "A";stock1.Out(4);Console.WriteLine(Stock.Qty);

类的静态成员和非静态成员区别如下:

语法:静态成员有关键字static,非静态成员无static关键字;

存储: 静态成员变量存储位于程序的全局变量存储区,有一个存储位置,不会拷贝不会复制,只是一个;非静态成员变量存储位于对象的变量存储区,多个对象拥有多个变量的存储,只隶属于自己的的对象;

归属区别:静态成员隶属于类,是类的资源,无论对一个类创建多少个实例,它的静态成员都只有一个副本,在各个地方的改变都会改变其值;非静态成员隶属于它的对象,各自对象同一个非静态成员值的改变都不互相影响,有多少实例就有多少副本;

生存周期区别: 静态成员只要分配了空间则在整个程序运行期间,只有程序关闭之后,它的内存才会被GC回收器收回,不过作用域仍然只限制于类的内部;类的非静态成员的生存周期跟随于隶属于对象的生存周期,对象消亡则非静态成员就会被回收;

初始化顺序的区别:初始化都是最先初始化类的静态成员,然后是非静态数据成员。

this 配合static

internal static class Common{    public static int StringToInt(this string value, int x = 0)    {        int result = 0;        bool ret = int.TryParse(value, out result);        if (!ret)        {            result = x;        }        return result;    }}

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章