C#面:静态成员和非静态成员的区别

  1. 访问方式:静态成员可以通过类名直接访问,而非静态成员需要通过类的实例来访问。
  2. 存储位置:静态成员存储在静态数据区,而非静态成员存储在堆栈或堆中,具体取决于它们所属的对象。
  3. 生命周期:静态成员在程序运行期间只有一份拷贝,而非静态成员每个对象都有一份拷贝。静态成员在程序启动时被初始化,在程序结束时被销毁,而非静态成员的生命周期与对象的创建和销毁相关。
  4. 共享性:静态成员是类的所有实例共享的,可以用于保存全局状态或者共享数据。非静态成员是每个对象独有的,每个对象都有自己的一份。
  5. 访问权限:静态成员可以访问类的所有成员,包括私有成员。非静态成员只能访问类的非静态成员。

下面是一个示例代码,演示了静态成员和非静态成员的使用:

public class MyClass
{
    public static int staticField; // 静态字段
    public int nonStaticField; // 非静态字段

    public static void StaticMethod()
    {
        Console.WriteLine("这是一个静态方法");
    }

    public void NonStaticMethod()
    {
        Console.WriteLine("这是一个非静态方法");
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        MyClass.staticField = 10; // 访问静态字段
        Console.WriteLine(MyClass.staticField);

        MyClass obj1 = new MyClass();
        obj1.nonStaticField = 20; // 访问非静态字段
        Console.WriteLine(obj1.nonStaticField);

        MyClass obj2 = new MyClass();
        obj2.nonStaticField = 30;
        Console.WriteLine(obj2.nonStaticField);

        MyClass.StaticMethod(); // 调用静态方法

        obj1.NonStaticMethod(); // 调用非静态方法
        obj2.NonStaticMethod();
    }
}
10
20
30
这是一个静态方法
这是一个非静态方法
这是一个非静态方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那个那个鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值