C#中成员初始化顺序
http://blog.csdn.net/huangcailian/article/details/25958967
一、成员初始化整体顺序
二、对类型静态成员构造的大致过程
三、对类型实例成员构造的大致过程
四、同时有静态成员和实例成员的大致构造过程
五、说明
using System;
using System.Diagnostics;
using System.Text; class Test
{
class CTEST
{ }
class SINGLE_TON
{
public static float sfx = ; //
public static CTEST ot = new CTEST();//
private float fx = ;
static private double dx = 100.03;//
private string s = "hello";
//public static readonly SINGLE_TON Instance = new SINGLE_TON();//加上这句就比较特殊了,这里虽有构造操作,但必须等到所有成员初始完成后才会进行
public static int x;//
public string str;
protected int y = ;
public SINGLE_TON()
{
Console.WriteLine("private single_ton");
} //静态构造函数最会多只会被调用一次,在首次访问类的静态成员变量或生成类的实例时被调用。 static SINGLE_TON()
{
Console.WriteLine("static single_ton");
} public void dosth()
{
Console.WriteLine("do some thing");
}
}
static void Main()
{
//首次访问类的静态变量,编译器首先会对所有有初始值的静态变量进行赋值操作,如1和2,3处。
//然后调用静态构造函数。
//不会对非静态变量进行赋值。不过它们都有默认值,数值类型为0,引用类型为null
int x = SINGLE_TON.x;
// SINGLE_TON.Instance.dosth();
// SINGLE_TON.Instance.dosth();
// SINGLE_TON.Instance.dosth(); //生成类实例时,编译器首先会对所有有初始值的静态变量进行赋值操作,如1和2,3处。
//然后调用静态构造函数。
//然后才对有初始值的非静态变量进行赋值。
//然后调用普通构造函数。
SINGLE_TON sg = new SINGLE_TON();
} //输出结果:
// private single_ton
// static single_ton
// do some thing
// do some thing
// do some thing }
C#中成员初始化顺序的更多相关文章
- Java中的成员初始化顺序和内存分配过程
Java中的成员初始化顺序和内存分配过程 原帖是这样描述的: http://java.dzone.com/articles/java-object-initialization?utm_source= ...
- Java中的初始化顺序(静态成员、静态初始化块,普通成员、普通初始化块、构造函数)
本文链接 http://blog.csdn.net/xiaodongrush/article/details/29170099 參考文章 http://my.oschina.net/le ...
- C++成员初始化顺序
#include <iostream> using namespace std; int seti() {cout << "seti" << e ...
- [java] java中的初始化顺序
先看程序: package init_cls; class A{ {System.out.println("i am in the class A!");} static { Sy ...
- java类的成员初始化顺序和初始化块知识
java类的成员初始化顺序和初始化块知识 转自:http://blog.csdn.net/lgfeng218/article/details/7606735 属性.方法.构造方法和自由块都是类中的成员 ...
- Java类继承关系中的初始化顺序
Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释. 非继承关系中的初始化顺序 对于非继承关系,主类Ini ...
- Java类成员初始化顺序
类中包含7中成员:1.静态变量 static2.final静态常量 final static3.静态代码块 static{} //多个代码块顺序执行 4.普通变量5.普通代码块 {} //多个代码 ...
- Java类的成员初始化顺序
Java类的成员初始化顺序 2017-06-01 代码: public class InitializeSequence { public static void main(String[] args ...
- C++中类成员变量在初始化列表中的初始化顺序
引子:我们知道,C++中类成员变量的初始化顺序与其在类中的声明顺序是有关的. 先看代码: class TestClass1 { public: TestClass1() { cout << ...
随机推荐
- OC字符串的一些常用的函数。
)//获取字符串长度 NSUInteger len= str.length; () //通过指定索引返回对应的字符 unichar ch =[str characterAtIndex:]; ()//通 ...
- 集成ZBar时容易遇到的问题以及解决方法
1.添加入几个必备的框架: libiconv.tbd QuartzCore.framework CoreVideo.framework CoreMedia.framework AVFoundation ...
- win8下出现安装sql2012 正在启动操作系统功能"NetFx3"
今天上午装win8系统,发现在装sql server 2012的时候,一直停在"正在启动操作系统功能"NetFx3""不动了,在网上找了下相关的资料,发现原来N ...
- 在Dynamics CRM 2015中通过3CX插件(以及3CX windows phone)拨出电话
背景 在On-premises部署的Dynamics CRM中实现通过网页拨通客户电话的功能 要点 3CX 提供了开箱即用的Dynamics CRM Solution,只需要在Microsoft Dy ...
- 单元测试_JUnit4的应用与实践
本文实例为:JUnit4+Eclipse+CVS的实践 目录 1.测试环境搭建 1.1 JDK安装部署 1.2 Eclipse安装部署 1.3 Eclipse添加JUnit4 1.4 CVS项目文件引 ...
- tair源码分析——leveldb新增的CompactRangeSelfLevel过程
tair是一个分布式KV存储引擎,当新增机器或者有机器down掉的时候,tair的dataserver会根据ConfigServer生成的新的对照表进行数据的迁移和清理.在数据清理的过程中就用到了在t ...
- subline 快捷键
subline 快捷键 安装 pretty css html 后1,CTRl+ shift +H 格式化代码
- Eclipse,myeclipse开发中常用技巧总结
一.myeclipse自带包和自己部署的包冲突解决问题方案 原来的依赖设置: 修改后的配置: 二.取消Myeclipse的自动文件验证来增加myeclipse速度 1.Windows –> Pe ...
- hdu 2048 神、上帝以及老天爷(错排)
神.上帝以及老天爷 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- IPC之PIPE
管道是一种只允许用在有亲属关系的进程间通信的方式,由函数pipe创建一个管道,read,write进行读写操作. #include <unistd.h> ]); 参数pipefd[2]数组 ...