小结ASP.NET中static关键字的相关用法

开发 后端
本文将介绍ASP.NET中static关键字用法,可以说static关键字是大家应用得最多的类型,希望本文能对大家有所帮助。

大家对于static关键字应该比较眼熟了,但是很多人对static关键字不理解,这其实就是对于auto的不理解。static关键字不是auto,变量在程序初始化时被分配,直到程序退出前才被释放。

静态变量

当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。

有时候,我们希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代码国家名称的变量。例子:

  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3. //直接使用“类名.成员”的格式,不能使用“对象名.成员”的格式,这点与JAVA不一样,JAVA两种都可以使用  
  4. Response.Write(Chinese.Country);   
  5. }  
  6.  
  7.  class Chinese  
  8.  {  
  9. public static string Country = "中国";  
  10. public void getCountry()  
  11. {  
  12. //类中的成员方法也可以直接访问静态成员变量  
  13. HttpContext.Current.Response.Write("你好!" + Country);  
  14. }  

需要注意的是:不能把任何方法体内的变量声明为静态,如下面这样是不行的:

  1. public void getCountry()  
  2. {  
  3. //类中的成员方法也可以直接访问静态成员变量  
  4. HttpContext.Current.Response.Write("你好!" + Country);  
  5. static int i = 1;  

静态方法

我们有时也希望不必创建对象就可以调用某个方法,换句话说也就是使该方法不必和对象绑定在一起。要实现这样的效果,只需要在类中定义的方法前加上static关键字就可以了,我们称这种方法为静态成员方法,还可以在类的非静态成员方法中象访问其他静态方法一样去访问这个静态方法,例子:

  1. protected void Page_Load(object sender, EventArgs e)  
  2. {   
  3. Chinese.getCountry();  
  4. }  
  5.  
  6.  class Chinese  
  7.  {  
  8. public static void getCountry()  
  9. {  
  10. HttpContext.Current.Response.Write("你好!中国");  
  11. }  

注意:在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可以使用,而静态方法在使用前不用创建任何对象。

const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。在多数情况下可以混用。
二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。

要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long总是默认为int一样;我们通常声明一个变量:

  1. int a;   
  2. string s;  

其实就是:

  1. auto int a;   
  2. auto string s;  

而static变量的声明是:

  1. static int a;   
  2. static string s;  

这样似乎可以更有利于理解auto和static是一对成对的关键字吧,就像private,protected,public一样;

对于static关键字的不理解,其实就是对于auto的不理解,因为它是更一般的;有的东西你天天在用,但未必就代表你真正了解它;auto的含义是由程序自动控制变量的生存周期,通常指的就是变量在进入其作用域的时候被分配,离开其作用域的时候被释放;而static就是不auto,变量在程序初始化时被分配,直到程序退出前才被释放;也就是static是按照程序的生命周期来分配释放变量的,而不是变量自己的生命周期

【编辑推荐】

  1. 点评一下ASP.NET的WEB控件
  2. ASP.NET控件学习总结
  3. ASP.NET前台控件点评:避免强迫症,奔向简洁高效
  4. ASP.NET 2.0环境下的Shell函数
  5. 在ASP.NET 2.0中向数据库批量插入数据
责任编辑:彭凡 来源: CSDN
相关推荐

2011-07-14 23:14:42

C++static

2022-02-17 08:31:38

C语言staic关键字

2021-02-01 13:10:07

Staticc语言UNIX系统

2009-07-24 12:14:17

asp.net技巧

2024-04-08 11:35:34

C++static关键字

2009-06-25 10:33:53

StaticJava类

2010-01-15 15:45:10

VB.NET New关

2020-12-09 05:19:35

static关键字Java

2009-07-30 08:49:58

ASP.NET中usi

2009-07-29 16:53:52

ASP.NET Get

2011-04-21 16:57:56

staticextern

2009-12-17 13:57:15

Ruby关键字

2010-02-02 14:27:54

C++ static关

2023-03-09 07:38:58

static关键字状态

2021-10-13 06:49:13

SQL Server优化

2022-05-06 08:32:40

Pythonwith代码

2024-02-26 10:36:59

C++开发关键字

2009-08-03 13:30:47

ASP.NET开发

2009-07-24 10:10:22

ASP.NET

2009-07-24 16:17:42

WebRequestEASP.NET
点赞
收藏

51CTO技术栈公众号