静态字段静态函数成员常量
Posted 小洋大海
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态字段静态函数成员常量相关的知识,希望对你有一定的参考价值。
静态字段:
□ 静态字段被类的所有实例共享,所有的实例都访问同一内存块。因此,如果该内存块的值被一个实例修改了,这种改变对所有实例是可见的。
□ 访问静态变量通过类名.字段名访问
□ 即使类没有实例任何对象,也存在静态字段。如果静态字段有初始化语句,不必要在程序执行之前就赋初始值,可以在使用该字段前再赋值(这点与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
在使用常量同样是函数名.常量名
以上是关于静态字段静态函数成员常量的主要内容,如果未能解决你的问题,请参考以下文章
| 9 |错误:无效使用非静态数据成员'Matrix :: row'| 9 |错误:数组绑定不是']'令牌之前的整数常量|