一.成员初始化整体顺序 1.成员赋值初始化先于构造函数: 2.成员赋值初始先从子类再到基类: 3.构造函数初始化先从基类再到子类: 4.静态成员初始化优先于实例成员初始化: 二.对类型静态成员构造的大致过程 1.分配静态成员的内存空间,此时空间存储数据为0: 2.执行类的静态成员的初始化语句: 3.执行类的静态构造函数. 三.对类型实例成员构造的大致过程 1.分配实例成员的内存空间,此时空间存储数据为0: 2.执行子类实例成员初始化语句: 3.执行基类实例化成员初始化语句: 4.执行基类构造函数…
上篇 是基本语法基础下的执行顺序,包括继承这个维度下的执行顺序,我们可以依照的规律顺下来,下面我们看下一些摸不到头脑的情况 我们实验 一个 类中的方法 去调用另一个非继承类的情况,  我们主要看下  静态构造函数 和没有静态构造函数执行顺序上的差别 class Program { static void Main(string[] args) { //执行顺序5 var de = new People("2"); //执行顺序6 People.Instance.OutDemo(); /…
<1>静态类: 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量.静态类最大的特点就是共享.在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类:其次,它防止在类的内部声明任何实例字段或方法.使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员,编译器将保证不会创建此 类的实例.静态类的另一个特征在于,C#编译器会自动把它标记为sealed.这个关键字将类指定为不可扩展:换言之,…
看到园友的一道面试题,很好奇,测试了一下结果. public class A { public static int X=B.Y ; public A() { ++X; } } public class B { public static int Y = A.X ; static B() { ++Y; } } static void Main(string[] args) { Console.WriteLine(A.X.ToString()); Console.WriteLine("B.Y&qu…
C#基础--类/接口/成员修饰符,多态.重载.重写,静态和非静态 类/接口/成员修饰符 C#修饰符---接口: 接口默认访问符是internal接口的成员默认访问修饰符是public C#修饰符--类: public.internal. partial.abstract.sealed.static C#修饰符--类成员修饰符: public.protected.private.internal.sealed.abstract.virtual.override.readonly.const 简单介…
项目中静态和非静态常被用到,什么时候需要用静态的,什么时候需要使用非静态,以及他们的区别是什么? 一.概述 静态和非静态的不同地方,就是静态从程序一启动就会一直占用内存,而非静态只有在实例化的时候才会分配内存,每实例化一次对象都会重新分配一次内存.比如数据库连接类,因为经常使用到,所以使用Static,定义成静态类是最合适的.如果定义成非静态方法,每次调用的时候都会实例化,这样占用内存就会非常大.再比如登录后台的方法,只在登陆的时候调用一次登录方法,定义成非静态方法是比较合适的.总之就是经常被调…
静态构造函数用于初始化任何静态数据,或执行仅需执行一次的特定操作. 将在创建第一个实例或引用任何静态成员之前自动调用静态构造函数. 静态构造函数的属性 1. 静态构造函数不使用访问修饰符或不具有参数.2. 在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数以初始化类.3. 不能直接调用静态构造函数.4. 用户无法控制在程序中执行静态构造函数的时间.5. 静态构造函数的一种典型用法是在类使用日志文件且将构造函数用于将条目写入到此文件中时使用.6. 静态构造函数对于创建非托管代码的包装类…
一.静态类 静态类是不能实例化的,我们直接使用它的属性与方法,静态类最大的特点就是共享. 探究 public static class StaticTestClass{    public static int n = 0; public static void Add()    {        n++;    }} 网页 P1.aspx 调用 StaticTestClass.Add(),并在页面上输出 n. 网页 P2.aspx 调用 StaticTestClass.Add(),并在页面上输…
当我们想初始化一些静态变量的时候,就需要用到静态构造函数了.这个静态构造函数属于类,而不属于实例,就是说这个构造函数只会被执行一次,即:在创建第一个实例或引用任何静态成员之前,由.NET自动调用. 现在碰到这样一个场景:提供一个静态方法,这个静态方法在不同的地方使用,涉及到一个参数值不同,而其他内容都完全一致.如果是将静态方法的内容复制出来做成另外一个方法,代码冗余太多,做法不可取.使用静态构造函数处理静态变量,则可以尽最大程度简化代码.如下示例: /// <summary> /// 基类 /…
用一个题目带大家走进静态函数,先看题目 class Program    {        public static int Count = 0;        static Program()        {            Count++;        }        public Program()        {            Count++;        }        static void Main(string[] args)        {    …