`

关于C#静态构造函数的几点说明

    博客分类:
  • C#
 
阅读更多
 静态构造函数是C#的一个新特性,其实好像很少用到。不过当我们想初始化一些静态变量的时候就需要用到它了。这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次。也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用。

class SimpleClass
{
    // Static constructor
    static SimpleClass()
    {
        //
    }
}



在使用静态构造函数的时候应该注意几点:

  1、静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。
  
  2、是在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。

  3、一个类只能有一个静态构造函数。

  4、无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。

  5、最多只运行一次。

  6、静态构造函数不可以被继承。

  7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。
分享到:
评论

相关推荐

    C#中静态构造函数的几点说明介绍

    以下是关于C#静态构造函数的详细说明: 1. 访问性与参数: 静态构造函数没有访问修饰符,如public或private,因为它们由.NET框架自动调用。同样,它们也不接受参数,因为它们不用于创建实例,而是用于初始化类级的...

    C#私有构造函数使用示例

    因此,若要确保类不能被实例化,除了声明私有构造函数,还需要考虑以下几点: - 显式声明私有构造函数,以消除任何可能的误解。 - 在类中添加静态成员和静态方法,以表明类的设计意图。 - 提供一个静态工厂方法(如...

    C#匿名函数详解,初学者必备

    C#构造函数是用来初始化对象的,主要有静态构造函数和实例构造函数两种类型。构造函数的使用可以使对象的初始化更加灵活、可靠。在实际开发中,构造函数经常用来初始化对象的属性,例如: ```csharp public class A ...

    C#技术内幕笔记!!

    实例构造函数用于初始化实例成员,静态构造函数用于初始化静态成员,两者都不能有返回值。 6. 静态和实例成员:静态成员属于类,不需要实例化就能访问;实例成员属于类的实例,需要实例化后才能访问。 7. 常量和...

    C#基础入门Word

    在C#编程语言中,学习基础入门Word文档主要涉及以下几个核心知识点: 1. 引用类型:在C#中,String、数组、类、接口和委托都属于引用类型。它们的内存分配在堆上,使用指针地址进行访问。引用类型具有类型安全的...

    C#实验报告五.docx

    本实验报告主要围绕C#编程语言的几个核心概念进行深入探讨,包括静态类与非静态类的区别、静态字段、静态方法和静态构造函数的使用,类的继承性与多态性,抽象类与接口的理解,以及分部类和命名空间的掌握。...

    类和结构比较.docx

    9. 静态构造函数:类和结构都可以有静态构造函数,用于在类型首次使用时执行一次性初始化。然而,如果结构中同时存在无参数的构造函数和有参数的构造函数,调用无参数构造函数时静态构造函数不会被调用。只有在调用...

    C#重载知识点

    public Person(string name) : this() { // 构造函数重载,传入Name Name = name; } public Person(string name, int age) : this(name) { // 再次重载,传入Name和Age Age = age; } } ``` 在这个例子中,`...

    一道关于实例化顺序的C#面试题

    在这道关于实例化顺序的C#面试题中,我们可以总结出以下几个重要的知识点: 1. 内联(inline)方式初始化字段:在C#中,我们可以使用内联方式来初始化字段,这是一种简化的语法。例如:`public class SomeType { ...

    C# serialport 串口发送与接收数据操作类

    MsComm 类的构造函数是 public MsComm(),用于初始化串口操作类。 add 方法: add 方法是 MsComm 类的重要方法之一,用于初始化串口并打开串口。该方法有六个参数,分别是 PortNum、Parity、BaudRate、ByteSize、...

    C#初级所有的练习课件

    在学习C#编程语言的过程中,初级阶段通常会涉及基础的面向对象编程(OOP)概念,包括类、对象、构造函数、析构函数、访问修饰符、方法以及方法的重载等。这些知识点是理解C#编程的基础,也是构建复杂软件系统的关键...

    C#面试问题简单提问

    `static`关键字在C#中用于定义静态成员,包括静态方法、属性、字段和构造函数。静态成员属于类本身,而不是实例,这意味着它们可以在没有创建类实例的情况下访问,并且只在内存中存在一份。这可以用于存储常量数据或...

    C#_OOP第二次补考试题答案参照.pdf

    - 子类构造函数的执行顺序是先调用父类构造函数,然后是子类构造函数,选项B正确。 - 选项D错误,因为如果父类没有无参构造函数,子类必须显式调用带参数的构造函数,并提供匹配的参数。 5. 抽象类: - 抽象类不...

    c#几种常用的设计模式

    在C#中,通常通过私有化构造函数和静态成员来实现。这样可以避免资源浪费,如数据库连接或线程池等昂贵的对象。 - 示例实现:可以使用`Lazy<T>`类或静态内部类来实现线程安全的单例。 2. **观察者模式(Observer)...

    C#程序员面试问题及答案

    知识点:C#提供默认的无参数构造函数,但是如果实现了其他构造函数,需要手动实现无参数构造函数。 8. C#中所有对象共同的基类是什么? 答案:System.Object. 知识点:所有C#对象的基类是System.Object,提供了...

    c# winform间传递参数的方法

    2. **初始化静态实例**:在窗体构造函数中初始化这个静态实例: ```csharp public frmFather() { InitializeComponent(); frmFatherTemp = this; } ``` 3. **定义属性**:在窗体中定义一个用于读写的属性,以...

    C#面向对象程序实例

    在“C#面向对象程序实例”中,我们可以深入学习和理解以下几个关键知识点: 1. 类与对象:类是创建对象的模板,定义了一组属性(数据成员)和方法(行为)。对象是类的实例,具备类所描述的特征和行为。在C#中,...

    Modern C#系列课程(4):C# 中的类的设计

    C#有两种构造函数:无参构造函数和带参数的构造函数。无参构造函数默认提供,而带参数的构造函数用于在创建对象时传入初始值。 5. **析构函数**:虽然不常用,但C#也支持析构函数,用`~`符号定义,用于在对象即将被...

Global site tag (gtag.js) - Google Analytics