首页 > 编程语言 >C#在类型实例化时都有哪些步骤

C#在类型实例化时都有哪些步骤

时间:2023-06-22 14:56:17浏览次数:29  
标签:初始化 C# 静态 字段 实例 化时 类型 构造函数

C#在类型实例化时都有哪些步骤。

首先我们都知道,对于类对象,在执行构造函数之前,我们需要使用关键字new来为新实例分配内存。new可以根据对象的类型来为其在堆上分配足够的空间,并且将这个对象的所有字段都设为默认值。也就是说,CLR会把该对象的所有引用类型字段设为null,而把值类型字段的所有底层二进制表示位设为0(本质上来说,不论是将值类型或引用类型字段初始化为“默认值”,其实都是把他们底层的数据位设为0)。这是任何类对象实例化的第一步。

静态构造函数和静态字段的构造函数会首先被调用。因为CLR在使用任何类型实例之前一定会先装载该类型,也就需要调用静态构造函数并且初始化静态成员。但是,到底是先初始化静态成员呢,还是调用静态构造函数呢?答案是初始化静态成员,因为CLR必须保证在执行构造函数的方法体时,相关的成员变量应该都可以被安全地使用。同样的道理也适用于实例构造函数和字段,也就是说对象成员的实例化会先于成员构造函数被执行。顺便说一句,类定义直接初始化类\对象字段的功能是由类\对象字段初始化器完成的。按1、2、3、4顺序执行!

1、静态字段被实例化。
2、静态构造函数被调用。
3、实例成员字段被实例化。
4、对象构造函数被调用。

标签:初始化,C#,静态,字段,实例,化时,类型,构造函数
From: https://www.cnblogs.com/bloomberg/p/17497742.html

相关文章

  • 20230418 java.util.Scanner
    简介publicfinalclassScannerimplementsIterator<String>,Closeable一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。Scanner使用分隔符模式将其输入分解为标记,默认情况下匹配空格。然后可以使用各种next方法将生成的标记转换为不同类型的值。Scanner......
  • Android 开发之Activity的启动模式-SingleTop
    接下来,介绍下Activity的另一种启动模式-栈顶复用模式(SingleTop)SingleTopsingleTop模式,它的表现几乎和standard模式一模一样,一个singleTopActivity的实例可以无限多,唯一的区别是如果在栈顶已经有一个相同类型的Activity实例,Intent不会再创建一个Activity,而是通过onNewIntent()被......
  • Service内核原理(二):自带工程线的IntentService
    为什么要使用IntentService:IntentServiceisabaseclassfor{@linkService}sthathandleasynchronous*requests(expressedas{@linkIntent}s)ondemand.Clientssendrequests*through{@linkandroid.content.Context#startService(Intent)}calls;the*serviceis......
  • 【点云配准】super4PCS
    在OpenGR的目录下,输入time-p./build/apps/Super4PCS/Super4PCS-i./assets/hippo1.ply./assets/hippo2.ply-o0.7-d0.01-t1000-n400-rsuper4pcs.objtime-p为控制台命令,作用为统计程序运行耗费的时间Super4PCS为应用程序的名称,-i命令表示后面为输入的数据名(带路径......
  • [HTML 5] Refer Polices
    Mordenbrowserapply noopenerforyou,butforlagacybrowsermightnot.What noopenerdoesisthat,itset window.openerto null,whichcanpreventevilsitechangetheoriginalsiteurlpointstoaphisingsite. A:iswrong,shouldbepreventnewlyop......
  • 事件分发三连问:事件是如何从屏幕点击最终到达 Activity 的?CANCEL 事件什么时候会触发?
    一、题面试中提到安卓的事件分发,我们一般都能说到从Activity->Window->DecorView->ViewGroup->View的dispatchTouchEvent流程,这个是最基本的需要掌握的,由此能深入引出一些什么知识点呢?事件是如何从屏幕点击最终到达Activity的?CANCEL事件什么时候会触发?如何解决滑动......
  • [HTML5] Content Security Policy CSP Header
    default-src"none";script-src"self";img-src"self"example.com;style-srcfonts.googleapis.com;font-srcfonts.gstatic.com;<scriptsrc="/js/app.js"></script>:allowbecause script-src"self&qu......
  • AtCoder Beginner Contest(abc) 306
    A-Echo题目大意把一个字符串的每个字符输出两遍解题思路签到题不多嗦了;神秘代码#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;typedefpair<int,int>PII;constintN=1e6+10;intn,m;signedmain(){cin>>n;string......
  • 二分查找法ceil版(找某个重复值的最大下标)利用二分upper法实现
    如果有等于target的元素就返回最大的下标元素。如果没有等于target的元素,那么就返回大于target的最小元素,即这一篇文章实现的upper函数。二分查找法upper版(找大于某个值的最小下标)递归+非递归版-翰林猿-博客园(cnblogs.com),当然你们也可以更改返回值-1什么的作为查找......
  • 【Android】iOS开发中xconfig和script脚本的使用
    利用Xcode进行开发时需要进行很多buildsetting的设置以便能让项目按照设置的进行编译,同时有时候需要在编译时利用script脚本进行一些设置,本文主要介绍xconfig文件和script脚本在Xcode开发中使用。作者:MambaYongXcode编译在使用xconfig时有几个关于Xcode的概念是需要理解的,这里我进......