美文网首页
41.C# 类的静态成员

41.C# 类的静态成员

作者: 技术老小子 | 来源:发表于2024-03-12 05:14 被阅读0次

摘要


使用 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;
    }
}

相关文章

  • 猿学-java有什么用java基础技术总结

    加载顺序 父类静态成员->父类静态代码块-> 子类静态成员->子类静态代码块-> 父类普通成员->父类代码块->父...

  • 7.6 类的静态成员

    7.6 类的静态成员 静态成员的特性 静态成员属于类,而不是对象。 类型可以是类对象、指针、引用、常量等。 静态成...

  • 2019-01-18

    二、.NET基础概念《静态类》 静态类:用static修饰的类。 注意:静态类的成员必须是静态成员,包括属性和方法...

  • java静态方法的线程安全问题

    类的成员分为两类,静态成员(static member)和实例成员(instance member)。静态成员属于...

  • 静态类型

    类的静态成员变量 在类的成员声明之前加上关键字static使其与类关联在一起。成为类的静态成员 类型 静态成员可以...

  • 类的静态成员*

    静态类成员包括静态数据成员和静态函数成员两部分。 静态数据成员: 类体中的数据成员的声明前加上static关键字,...

  • C++之静态成员

    静态成员数据 1、静态成员数据 是属于类 而不是对象 2、静态成员数据 是所有对象 共享的 3、静态成员数据 类中...

  • C++基础学习

    1. 类的静态成员和非静态成员区别是: 类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过...

  • 创建对象时调用顺序

    创建对象时调用顺序如下: ①先初始化父类和子类的静态成员。 ②父类非静态成员。 ③父类构造方法。 ④子类非静态成员...

  • 提示二十四

    今天来看提示二十四: 优先考虑静态成员类。 作者上来就介绍了四种嵌套类:静态成员类,非静态成员类,匿名类和局部类。...

网友评论

      本文标题:41.C# 类的静态成员

      本文链接:https://www.haomeiwen.com/subject/fptvzdtx.html