静态字段、静态函数、成员常量

静态字段:

□ 静态字段被类的所有实例共享,所有的实例都访问同一内存块。因此,如果该内存块的值被一个实例修改了,这种改变对所有实例是可见的。

□ 访问静态变量通过类名.字段名访问

□ 即使类没有实例任何对象,也存在静态字段。如果静态字段有初始化语句,不必要在程序执行之前就赋初始值,可以在使用该字段前再赋值(这点与const常量不一样,const常量是声明就赋值)

例如:

class Program
    {
        static void Main(string[] args)
        {
            MyClass myclass1 = new MyClass();
            MyClass myclass2 = new MyClass();

            myclass1.PrintNum();
            myclass2.PrintNum();

            myclass1.Num = 10;

            myclass1.PrintNum();
            myclass2.PrintNum();

            MyClass._num = 20;

            myclass1.PrintNum();
            myclass2.PrintNum();

            Console.ReadKey();
            
        }
    }

    class MyClass
    {
        public static int _num = 0;

        public int Num
        {
            get { return _num; }
            set { _num = value; }
        }

        public void PrintNum()
        {
            Console.WriteLine(_num);
        }
    }

输出是:

0 0 10 10 20 20(打竖)

Tip:静态字段可以被实例改变值,但是不能通过实例.静态字段名来改变,但可以通过实例内部调用的函数改变值(如属性)。因为静态字段是类的共有字段,不能被实例化成实例对象的字段。

静态函数:

□ 如同静态字段,即使类没有实例化对象,也可以调用静态函数,调用方法同样是:类名.静态函数名

□ 静态函数不能访问实例成员。它可以访问其他静态成员。

□ 静态函数不能访问实例成员。它可以访问其他静态成员。
在这里插入图片描述
可以声明为静态的类成员类型:

数据成员(储存数据):字段、类型

函数成员(执行代码):方法、属性、构造函数、运算符、事件

成员常量:

□ 所谓成员常量而非常量,是因为C#不像C和C++拥有全局常量,每个常量都必须声明在类里面,只能是类的成员。

□ 成员常量表现的像静态量一样,但是不能被static关键字修饰。与真正的静态量不同,常量没有自己的存储位置,而是在编译时被编译器替换。

例如:

class Program
    {
        static void Main(string[] args)
        {
            MyClass myclass = new MyClass();


            Console.WriteLine(MyClass._num);
            Console.ReadKey();
            
        }
    }

    class MyClass
    {
        public const int _num = 20;
    }

输出:20

在使用常量同样是函数名.常量名

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值