篮球比赛一共几节有几节;静态变量会不会被创建?

C#_static变量的细节和使用
C#_static变量的细节和使用
编辑:www.fx114.net
本篇文章主要介绍了"C#_static变量的细节和使用",主要涉及到C#_static变量的细节和使用方面的内容,对于C#_static变量的细节和使用感兴趣的同学可以参考一下。
在C#程序中,没有全局变量的概念,这意味着所有的成员变量只有该类的实例才能操作这些数据,这起到了“信息隐藏”的作用。但有些时候,这样做却不是个明智的选择。
假设我们要定义一个图书类,要求该类能保存图书的数量,即每增加一本图书(定义一个实例),图书的数量应该加1。如果没有静态变量,我们需要将图书的数量保存在每本图书(实例)里,然而,这样的变量要在不同图书(实例)里重复存储,图书(实例)数量少的话,我们还能接受,如果图书(实例)数量较多的话,比如成千上万,我们无法想象这要造成多少资源(如内存、磁盘空间)的浪费,更让人无法忍受的是:因为图书(实例)的数量要保存在每本图书(实例)里,该值肯定是不同的。要使这些图书(实例)中保存的图书(实例)数量一致,我们必须在每增加一本新书(生成一个新实例)时,修改其他所有图书(实例)中保存的该值。Oh,My
God!你会重新向往面向过程的程序设计方法,向往拥有全局变量的时代。但,这种局面不会出现,因为C#中为你准备好了另外一种变量类型:静态变量。它在类中类似全局变量,保存类的公共信息,所有该类的实例(对象)共享该值。
声明静态变量的语法如下:
&访问修饰符&static 数据类型 变量名;
这里的访问修饰符跟类的其它成员一样,可以是public,protected,private或internal等。
在普通的成员变量前加static关键字,就变成了静态变量。静态变量和实例变量存储方式不同,静态变量在声明开始,就一直存储在内存中,直到整个程序终止。而实例成员在创建对象时分配内存,并存储一个数据副本。所以静态成员变量认为是属于类的,而不是对象。
静态变量与实例变量的区别如下:
1.内存分配
静态变量在应用程序初始化时,就存在于内存当中,直到它所在的类的程序运行结束时才消亡;
而实例变量需要被实例化后才会分配内存。
2.生存周期
静态变量生存周期为应用程序的存在周期;
实例变量的存在周期取决于实例化的类的存在周期。
3.调用方式
静态变量只能通过“类.静态变量名”调用,类的实例不能调用;
实例变量当该变量所在的类被实例化后,可通过实例化的类名直接访问。
4.共享方式
静态变量是全局变量,被所有类的实例对象共享,即一个实例的改变了静态变量的值,其他同类的实例读到的就是变化后的值;
实例变量是局部变量,不共享的。
5.访问方式
静态成员不能访问实例成员;
实例成员可以访问静态成员。
静态变量在类装载的时候分配内存,以后创建的对象都使用的该内存,相应的操作也就是对这块内存进行操作。也可以看作是另类的全局变量。
所以:静态变量只的值只会初始化一次,后面每次访问,都是上次处理过的值,(即使是在一个函数内部)。
实例变量每次都初始化。
class Program
static void Main(string[]args)
&&&&//输出未经定义的静态变量,结果为0;也说明了,在C#中未赋初值的变量系统自动赋为0
&&&&Console.WriteLine(sort.i);
&&&&//静态变量的访问方法(类名.静态变量名),而且还可以在外部操作静态变量呢,可见静态变量并不神秘;
&&&&sort.i = 5;
&&&&//输出5
&&&&Console.WriteLine(sort.i);
&&&&//还可以通过构造函数对静态变量赋初值呢,呵呵
&&&&sort sortTest = new sort();
&&&&//输出构造函数中的赋值 3;
&&&&Console.WriteLine(sort.i);
class sort
public sort()
&&&&i = 3;
静态变量必须使用类名来引用,而不能使用类的实例,因为,静态变量不属于任何实例,而是共有的。我们可以打个比方:在一个班级中,有些物品是个人的,我们想使用时,必须指出物品的所有者,比如说“王三的自行车”,在C#程序中我们可以使用:王三.自行车的格式。有些物品是大家共有的物品,不能以个人名义使用,而是用班级的名义使用,比如班集体出资买的篮球,只能说:“班级的篮球”,而不能说:“王三的篮球”。这绝对是不行的,这对其他人绝对是不公平的,我们可以联想到许多贪官污吏就是使用了不属于自己的东西,或以个人名义使用公家的东西而葬送了自己。
说一句有用的就是:静态变量是用类名来引用它。即:类名.静态变量名;
举个具体的例子如下:
using System.Collections.G
using System.T
class Program
class Class1
&&&&public static String staticStr = &Class&;
&&&&public String notstaticStr = &Obj&;
static void Main(string[]args)
&&&&//静态变量通过类进行访问,该类所有实例的同一静态变量都是同一个值
&&&&Console.WriteLine(&Class1's staticStr: {0}&, Class1.staticStr);
&&&&Class1 tmpObj1 = new Class1();
&&&&tmpObj1.notstaticStr = &tmpObj1&;
&&&&Class1 tmpObj2 = new Class1();
&&&&tmpObj2.notstaticStr = &tmpObj2&;
&&&&//非静态变量通过对象进行访问,不同对象的同一非静态变量可以有不同的值
&&&&Console.WriteLine(&tmpObj1's notstaticStr: {0}&, tmpObj1.notstaticStr);
&&&&Console.WriteLine(&tmpObj2's notstaticStr: {0}&, tmpObj2.notstaticStr);
&&&&Console.ReadLine();
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:C#静态变量
C#静态变量
编辑:www.fx114.net
本篇文章主要介绍了"C#静态变量",主要涉及到C#静态变量方面的内容,对于C#静态变量感兴趣的同学可以参考一下。
在C#程序中,没有全局变量的概念,这意味着所有的成员变量只有该类的实例才能操作这些数据,这起到了&信息隐藏&的作用。但有些时候,这样做却不是个明智的选择。
假设我们要定义一个图书类,要求该类能保存图书的数量,即每增加一本图书(定义一个实例),图书的数量应该加1。如果没有静态变量,我们需要将图书的数量保存在每本图书(实例)里,然而,这样的变量要在不同图书(实例)里重复存储,图书(实例)数量少的话,我们还能接受,如果图书(实例)数量较多的话,比如成千上万,我们无法想象这要造成多少资源(如内存、磁盘空间)的浪费,更让人无法忍受的是:因为图书(实例)的数量要保存在每本图书(实例)里,该值肯定是不同的。要使这些图书(实例)中保存的图书(实例)数量一致,我们必须在每增加一本新书(生成一个新实例)时,修改其他所有图书(实例)中保存的该值。Oh,My God!你会重新向往面向过程的程序设计方法,向往拥有全局变量的时代。但,这种局面不会出现,因为C#中为你准备好了另外一种变量类型:静态变量。它在类中类似全局变量,保存类的公共信息,所有该类的实例(对象)共享该值。
声明静态变量的语法如下:
&访问修饰符&static 数据类型 变量名;这里的访问修饰符跟类的其它成员一样,可以是public,protected,private或internal等。
在普通的成员变量前加static关键字,就变成了静态变量。静态变量和实例变量存储方式不同,静态变量在声明开始,就一直存储在内存中,直到整个程序终止。而实例成员在创建对象时分配内存,并存储一个数据副本。所以静态成员变量认为是属于类的,而不是对象。
静态变量与实例变量的区别如下: 1.内存分配 静态变量在应用程序初始化时,就存在于内存当中,直到它所在的类的程序运行结束时才消亡; 而实例变量需要被实例化后才会分配内存。 2.生存周期 静态变量生存周期为应用程序的存在周期; 实例变量的存在周期取决于实例化的类的存在周期。 3.调用方式 静态变量只能通过&类.静态变量名&调用,类的实例不能调用; 实例变量当该变量所在的类被实例化后,可通过实例化的类名直接访问。 4.共享方式 静态变量是全局变量,被所有类的实例对象共享,即一个实例的改变了静态变量的值,其他同类的实例读到的就是变化后的值; 实例变量是局部变量,不共享的。 5.访问方式 静态成员不能访问实例成员; 实例成员可以访问静态成员。
静态变量在类装载的时候分配内存,以后创建的对象都使用的该内存,相应的操作也就是对这块内存进行操作。也可以看作是另类的全局变量。
所以:静态变量只的值只会初始化一次,后面每次访问,都是上次处理过的值,(即使是在一个函数内部)。 实例变量每次都初始化。
using Sclass Program{static void Main(string[]args){&&& //输出未经定义的静态变量,结果为0;也说明了,在C#中未赋初值的变量系统自动赋为0&&& Console.WriteLine(sort.i);&&& //静态变量的访问方法(类名.静态变量名),而且还可以在外部操作静态变量呢,可见静态变量并不神秘;&&& sort.i = 5;&&& //输出5&&& Console.WriteLine(sort.i);&&& //还可以通过构造函数对静态变量赋初值呢,呵呵&&& sort sortTest = new sort();&&& //输出构造函数中的赋值 3;&&& Console.WriteLine(sort.i);}}
class sort{public sort(){&&& i = 3;}}
静态变量必须使用类名来引用,而不能使用类的实例,因为,静态变量不属于任何实例,而是共有的。我们可以打个比方:在一个班级中,有些物品是个人的,我们想使用时,必须指出物品的所有者,比如说&王三的自行车&,在C#程序中我们可以使用:王三.自行车的格式。有些物品是大家共有的物品,不能以个人名义使用,而是用班级的名义使用,比如班集体出资买的篮球,只能说:&班级的篮球&,而不能说:&王三的篮球&。这绝对是不行的,这对其他人绝对是不公平的,我们可以联想到许多贪官污吏就是使用了不属于自己的东西,或以个人名义使用公家的东西而葬送了自己。
说一句有用的就是:静态变量是用类名来引用它。即:类名.静态变量名;
举个具体的例子如下:
using Susing System.Collections.Gusing System.T
class Program
class Class1{
&&& public static String staticStr = "Class";&&& public String notstaticStr = "Obj";
static void Main(string[]args)
&&& //静态变量通过类进行访问,该类所有实例的同一静态变量都是同一个值
&&& Console.WriteLine("Class1's staticStr: {0}", Class1.staticStr);
&&& Class1 tmpObj1 = new Class1();
&&& tmpObj1.notstaticStr = "tmpObj1";
&&& Class1 tmpObj2 = new Class1();
&&& tmpObj2.notstaticStr = "tmpObj2";
&&& //非静态变量通过对象进行访问,不同对象的同一非静态变量可以有不同的值
&&& Console.WriteLine("tmpObj1's notstaticStr: {0}", tmpObj1.notstaticStr);
&&& Console.WriteLine("tmpObj2's notstaticStr: {0}", tmpObj2.notstaticStr);
&&& Console.ReadLine();
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:

我要回帖

更多关于 篮球比赛每节几分钟 的文章

 

随机推荐