静态和实例方法

文章讲述了C#中静态方法(如GetNextSerialNo和SetNextSerialNo)与实例方法(如GetSerialNo)的区别,强调了静态方法不依赖于实例,而实例方法则可以访问实例和静态成员。通过Entity类的示例,展示了如何在类级别和实例级别调用这些方法。
摘要由CSDN通过智能技术生成

静态和实例方法

使用 static 修饰符声明的方法是静态方法。 静态方法不对特定的实例起作用,只能直接访问静态成员。

未使用 static 修饰符声明的方法是实例方法。 实例方法对特定的实例起作用,并能够访问静态和实例成员。 其中调用实例方法的实例可以作为 this 显式访问。 在静态方法中引用 this 会生成错误。

以下 Entity 类包含静态和实例成员。

C#复制

class Entity
{
    static int s_nextSerialNo;
    int _serialNo;
    
    public Entity()
    {
        _serialNo = s_nextSerialNo++;
    }
    
    public int GetSerialNo()
    {
        return _serialNo;
    }
    
    public static int GetNextSerialNo()
    {
        return s_nextSerialNo;
    }
    
    public static void SetNextSerialNo(int value)
    {
        s_nextSerialNo = value;
    }
}

每个 Entity 实例均有一个序列号(很可能包含此处未显示的其他一些信息)。 Entity 构造函数(类似于实例方法)将新实例初始化为包含下一个可用的序列号。 由于构造函数是实例成员,因此可以访问 _serialNo 实例字段和 s_nextSerialNo 静态字段。

GetNextSerialNo 和 SetNextSerialNo 静态方法可以访问 s_nextSerialNo 静态字段,但如果直接访问 _serialNo 实例字段,则会生成错误。

下例显示了 Entity 类的用法。

C#复制

Entity.SetNextSerialNo(1000);
Entity e1 = new();
Entity e2 = new();
Console.WriteLine(e1.GetSerialNo());          // Outputs "1000"
Console.WriteLine(e2.GetSerialNo());          // Outputs "1001"
Console.WriteLine(Entity.GetNextSerialNo());  // Outputs "1002"

SetNextSerialNo 和 GetNextSerialNo 静态方法在类中进行调用,而 GetSerialNo 实例方法则是在类实例中进行调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值