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

在C#中,静态成员和非静态成员是面向对象编程中非常重要的概念,它们有以下区别:

  1. 静态成员是属于类的,而非静态成员是属于对象的。
  2. 静态成员可以通过类名直接访问,而非静态成员只能通过对象名访问。
  3. 静态成员在程序启动时被初始化,而非静态成员在每个对象创建时被初始化。

下面是一个使用静态成员和非静态成员的实例:

class Program
{
    static void Main(string[] args)
    {
        // 创建两个Student对象
        Student s1 = new Student("Tom", 18);
        Student s2 = new Student("Jerry", 20);

        // 访问静态成员
        Student.SchoolName = "ABC School";
        Console.WriteLine(Student.SchoolName); // 输出: ABC School

        // 访问非静态成员
        Console.WriteLine(s1.Name); // 输出: Tom
        Console.WriteLine(s2.Name); // 输出: Jerry
        Console.WriteLine(Student.Count); // 输出: 2(静态成员)

        // 修改实例对象的数据
        s1.Name = "Mike";
        Console.WriteLine(s1.Name); // 输出: Mike
        Console.WriteLine(s2.Name); // 输出: Jerry
    }
}

class Student
{
    // 静态成员(学校名称)
    public static string SchoolName;

    // 静态成员(学生数量)
    public static int Count = 0;

    // 非静态成员(姓名)
    public string Name;

    // 非静态成员(年龄)
    public int Age;

    // 构造函数
    public Student(string name, int age)
    {
        Name = name;
        Age = age;
        Count++; // 每创建一个对象,静态成员Count增加1
    }
}

在上述代码中,Student类包含一个静态成员SchoolName和一个静态成员Count,它们属于类,并且可以通过类名访问。同时,Student类还包含两个非静态成员Name和Age,它们属于每个实例对象,并且只能通过实例对象名访问。

在Main方法中,创建了两个Student对象s1和s2,通过Student类访问了静态成员SchoolName和静态成员Count,以及通过实例对象访问了非静态成员Name,并修改了s1的Name属性值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值