文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ASP.NET中static关键字如何使用

2023-06-17 22:05

关注

ASP.NET中static关键字如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

静态变量

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

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

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

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

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

静态方法

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

protected void Page_Load(object sender, EventArgs e)  {   Chinese.getCountry();  }    class Chinese   {  public static void getCountry()  {  HttpContext.Current.Response.Write("你好!中国");  }  }

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

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

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

int a;   string s;

其实就是:

auto int a;   auto string s;

而static变量的声明是:

static int a;   static string s;

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

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

关于ASP.NET中static关键字如何使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯