C#编程基础:静态构造函数

静态构造函数可能一般对于它有点陌生,静态构造函数是C#的一个新特性,在编程过程中用处并不广,它的主要目的是用于初始化一些静态的变量。可以参考C#入门基础01教程。

1、静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。
2、是在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。
3、一个类只能有一个静态构造函数。
4、无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。
5、最多只运行一次。
6、静态构造函数不可以被继承。
7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。

简单值类型的全局变量默认初始值都是0
因为入口函数在类B,所以程序首先加载B,由于y是B的静态成员,类一加载时便会计算y的值,但是发现y的值是通过赋值的方式获得的,等号右边用到了A的
x,此时会立即计算x的值,x是通过类A的静态构造函数初始化的,期间又引用了B的Y,此时y的值还是0(因为y的赋值语句还没执行完,故其值还是默认
的),得到x=0+1=1,继续为y赋值得到y=x+1=2。

想了解更多编程语言教程集合可登陆e良师益友网。

时间: 2024-08-28 07:09:37

C#编程基础:静态构造函数的相关文章

静态构造函数(C# 编程指南)

静态构造函数用于初始化任何 静态 数据,或用于执行仅需执行一次的特定操作.在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数. C# class SimpleClass { // Static variable that must be initialized at run time. static readonly long baseline; // Static constructor is called at most one time, before any // insta

【C#基础】 可选参数调用、params、无参静态构造函数

C# 可选参数方法调用: 可选参数方法: 调用方式可以: 这样我们要是用age和grade的默认值这样我们就可以跳过不必要的 我们就可以指定year的值. 可选参数必须在所有必须参数之后 params可变参数一定要在最后一个 静态构造函数 没有修饰符 C#的新特征是可以给类写一个无参静态的构造函数,这种构造函数只执行一次. 编写静态构造函数的原因是,有一些静态的字段或属性在第一次使用类之前从外部初始化静态字段和属性. 无参构造函数和静态构造函数可以存在同一个类中. 如果是只读成员,他就是一个不可

Java编程基础-面向对象(中)

本章承接Java编程基础-面向对象(上)一文. 一.static关键字 在java中,定义了一个static关键字,它用于修饰类的成员,如成员变量.成员方法以及代码块等,被static修饰的成员具备一些特性. 1.static关键字的特点: a)随着类的加载而加载,也就是说,静态会随着类的消失而消失,说明它的生命周期最长. b)优先于对象存在,明确一点,静态是先存在的,对象是后存在的. c)被类的所有对象共享. d)可以通过类名调用. 2.静态变量 在一个java类中,可以使用static关键字

[.net 面向对象编程基础] (14) 重构

[.net 面向对象编程基础] (14) 重构 通过面向对象三大特性:封装.继承.多态的学习,可以说我们已经掌握了面向对象的核心.接下来的学习就是如何让我们的代码更优雅.更高效.更易读.更易维护.当然了,这也是从一个普通程序员到一个高级程序员的必由之路.就看病一样,普通医生只能治标,高级医生不但看好病,还能除病根. 1.什么时重构? 重构(Refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性.

[.net 面向对象编程基础] (16) 接口

[.net 面向对象编程基础] (16) 接口 关于“接口”一词,跟我们平常看到的电脑的硬件“接口”意义上是差不多的.拿一台电脑来说,我们从外面,可以看到他的USB接口,COM接口等,那么这些接口的目的一就是让第三方厂商生产的外设都有相同的标准,也是提供一个对外通信或操作的入口. 只是C#的接口除了以上特点之外,还具有一种类似于模板的功能,我们定义一组接口,就像是一个模板.这点和抽象类不同,抽象类是先有子类或都子类的概念,从中抽象出一个类.而接口更像是我们要设计一台机器,先把这台机器对外的功能接

[.net 面向对象编程基础] (15) 抽象类

[.net 面向对象编程基础] (15) 抽象类 前面我们已经使用到了虚方法(使用 Virtual修饰符)和抽象类及抽象方法(使用abstract修饰符)我们在多态一节中说到要实现类成员的重写必须定义为一个虚方法或抽象方法.这节单独把抽象类提出来,是因为抽象是.net实现面向对象编程重要的重要思想,定义抽象类就象一个模板一个提纲,它可以理解为中央的指导思想,我们通过派生类去具体实现它.由此可见,抽象类本身没有任何作用,也不能被实例化,因为他本身就不具有具体的事物.比如上节的动物类的例 子,我们实

[.net 面向对象编程基础] (7) 基础中的基础——流程控制语句

[.net 面向对象编程基础] (7) 基础中的基础——流程控制语句 本来没有这一节的内容,后来考虑到既然是一个系列文章,那么就尽可能写的详细一些,本节参考了网上朋友所写的例子,为的是让更多小伙伴学习,提高,加薪,如有版权问题,请邮件我,我第一时间处理. 语句:是程序中的小指令,本节主要以流程控制语句为主要内容. 流程控制语句中最常用的三个是 选择语句(即条件语句).循环语句和异常处理语句 流程控制语句分类: 类别    关键字 选择语句  if.else.switch.case 循环语句  d

[.net 面向对象编程基础] (5) 基础中的基础——变量和常量

[.net面向对象编程基础]  (5) 基础中的基础——变量和常量 1.常量:在编译时其值能够确定,并且程序运行过程中值不发生变化的量. 通俗来说,就是定义一个不能改变值的量.既然不能变动值,那就必须在定义的时候初始化. 示例: 语法: const 类型名 常量名=常量表达式; 例子: const string  cat="hello cat"; 2.变量:具有变量名和值的对象 变量就是把数据暂存于某处内存中,以备调用. 示例: 声明:[访问修饰符] 类型 变量名[=初值][变量名=[

LINQ to XML 编程基础

1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: 隐藏行号 复制代码 ?创建 XML public static void CreateDocument() { string path = @"d:\website"; XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new XEle