广告
返回顶部
首页 > 资讯 > 精选 >CLR中静态构造函数如何使用
  • 452
分享到

CLR中静态构造函数如何使用

2023-06-17 21:06:55 452人浏览 薄情痞子
摘要

本篇文章给大家分享的是有关CLR中静态构造函数如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。CLR会选择如下时间之一来调用静态构造函数:1,在类型的***个实例创建之前

本篇文章给大家分享的是有关CLR中静态构造函数如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

CLR会选择如下时间之一来调用静态构造函数:

1,在类型的***个实例创建之前,或类型的非继承字段或成员***次访问之前。这里的“之前”,代表前后衔接的意思。这里的时刻是精确的!

2,在非继承的静态字段或成员***次访问之前的某个时刻,具体时刻不定!

由于调用的时刻不确定,所以我们***不要编写依赖于特定的静态构造函数的执行顺序的代码,这样很容易产生不可预料的后果!

下面大家看三个Demo,我们来更加深入的看看静态构造函数的一些有趣的行为:

Demo1:    static void Main(string[] args)  {  Console.WriteLine(B.strText);  }  public class A  {  public static string strText;  static A()  {  strText = "aaaa";  }  }  public class B : A  {  static B()  {  strText = "bbbb";   }  }

大家猜猜结果是什么,可能有人认为输出的是bbbb,因为访问B.strText需要调用B类的静态构造函数static B()。实际上输出的结果是aaaa,因为strText是类A的静态字段,而类B只是继承了这个字段,所以这里会调用类A的静态构造函数static A(),所以输出结果是aaaa。这也没有什么真正可说的,相信大家都能看出这个结果的。

下面看看第二个Demo:

Demo2:    static void Main(string[] args)  {  B b = new B();  A a = new A();   Console.WriteLine(B.strText);   }  public class A  {  public static string strText;  static A()  {  strText = "aaaa";   }  }  public class B : A  {  static B()  {  strText = "bbbb";   }  }

大家猜猜输出结果是什么,可能有人认为会输出aaaa,理由是new B()之前会调用static B(),然后new A()之前需要调用static A,这样结果是aaaa,但是实际情况并非如果,正确的结果是bbbb,原因如下:


在执行new B(); 之前,B类的静态构造函数会调用,也就是会调用:

static B()  {   strText="bbbb";  }

当执行到strText=“bbbb"的时候,这时需要访问strText字段,而B的strText字段是从A类继承的,所以这里需要会先调用:

static A()  {   strText="aaaa";   }


执行这个函数以后strText的值是aaaa

然后代码又回到static B()中,这时才执行static B()中的strText="bbbb"这行,所以strText这时的值是bbbb

当执行A a=new A();的时候,不会在调用A的静态构造函数了,因为前面已经调用过了,静态函数在整个应用程序域的生命周期中只会调用一次!

以上就是CLR中静态构造函数如何使用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: CLR中静态构造函数如何使用

本文链接: https://www.lsjlt.com/news/293078.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CLR中静态构造函数如何使用
    本篇文章给大家分享的是有关CLR中静态构造函数如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。CLR会选择如下时间之一来调用静态构造函数:1,在类型的***个实例创建之前...
    99+
    2023-06-17
  • CLR Via C#调用静态构造函数是什么
    本篇内容主要讲解“CLR Via C#调用静态构造函数是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CLR Via C#调用静态构造函数是什么”吧!CLR Via C#总结:1 静态构造函...
    99+
    2023-06-17
  • C#中静态构造函数如何使用
    C#中静态构造函数如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#静态构造函数是一个新特性,其实好像很少用到。不过当我们想初始化一些静态变量的时候就需要用到它了。...
    99+
    2023-06-17
  • CLR Via C#静态构造函数的性能是怎样的
    本篇内容主要讲解“CLR Via C#静态构造函数的性能是怎样的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CLR Via C#静态构造函数的性能是怎样的”吧!1 CLR Via C#静态构造...
    99+
    2023-06-17
  • C++中怎么静态构造函数
    C++中怎么静态构造函数,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。函数是C++ 语言程序的主要组成部分,一个函数可以调用其他函数。在设计良好的程序中,每个函数都有特定的...
    99+
    2023-06-17
  • C#静态构造函数有什么作用
    这篇文章主要讲解了“C#静态构造函数有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#静态构造函数有什么作用”吧!C#构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对...
    99+
    2023-06-18
  • C#中构造函数如何使用
    C#中构造函数如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#构造函数在使用方面及行为方面的一些特殊规则:如果开发人员没有为一个类提供构造函数,那么,...
    99+
    2023-06-17
  • PHP中构造函数如何使用
    这篇文章将为大家详细讲解有关PHP中构造函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。PHP经过长时间的发展,很多用户都很了解PHP了,这里我发表一下个人理解,和大家讨论讨论。大...
    99+
    2023-06-17
  • Java中静态代码块、构造代码块、构造函数和普通代码块的区别
    目录1、静态代码块①、格式②、执行时机③、静态代码块的作用④、静态代码块不能存在任何方法体中⑤、静态代码块不能访问普通变量2、构造代码块①、格式②、执行时机③、构造代码块的作用3、构...
    99+
    2023-05-19
    Java静态代码块 Java代码块区别
  • C#中如何使用结构体构造函数
    本篇文章给大家分享的是有关C#中如何使用结构体构造函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。///〈summary〉  ///启动服务端的参数结构&...
    99+
    2023-06-17
  • thinkphp中construct构造函数如何使用
    本篇文章为大家展示了thinkphp中construct构造函数如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。thinkphp中的__construct是不...
    99+
    2022-10-19
  • ADO.NET 中DataTable构造函数如何使用
    这篇文章给大家介绍ADO.NET 中DataTable构造函数如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。DataTable对象是内存中的一个数据表,主要由DataRow对象和DataColumn对象组成。D...
    99+
    2023-06-17
  • JavaScript如何使用Function()构造函数
    这篇文章主要介绍JavaScript如何使用Function()构造函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Function()构造函数先看代码:var f&nb...
    99+
    2022-10-19
  • C++类构造函数如何使用
    本篇文章给大家分享的是有关C++类构造函数如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。所谓C++类是定义同一类所有对象的变量和方法的蓝图或原型,C++类体内的成员是需...
    99+
    2023-06-17
  • Go语言中如何使用结构体构造函数
    这篇文章将为大家详细讲解有关Go语言中如何使用结构体构造函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Go语言的结构体 构造函数下面的代码就实现了一个P...
    99+
    2022-10-18
  • 如何在javascript中使用构造函数继承
    本篇文章给大家分享的是有关如何在javascript中使用构造函数继承,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、说明使用父亲的结构函数来增强子类的实例,等于复制父亲的实...
    99+
    2023-06-15
  • C++11中委托构造函数如何使用
    这篇文章将为大家详细讲解有关C++11中委托构造函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++11之前的状况构造函数多了以后,几乎必然地会出现代码重复的情况,为了避免这种情...
    99+
    2023-06-19
  • C++中如何使用类对象构造函数
    C++中如何使用类对象构造函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。对于普通类型的对象来说,他们之间的复制是很简单的,自己定义的类的对象同样是对象,谁也...
    99+
    2023-06-17
  • vue里面如何使用构造函数
    在vue中使用构造函数的方法:1.新建html项目,引入vue;2.使用new Vue()方法定义构造函数;3.使用模板语法调用构造函数;具体方法如下:首先,新建一个html项目,并在项目中引入vue;#通过文件方式引入<script...
    99+
    2022-10-20
  • 如何使用PowerMock来Mock静态函数
    这篇文章主要介绍如何使用PowerMock来Mock静态函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!EasyMock和Mockito等框架,对static, final, private方法均是不能mock的。...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作