摘要
使用 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 条评论) “” |