专栏首页python3C#类学习-3

C#类学习-3

C#类的构造函数

构造函数是在创建给定类型的对象时执行的方法。

构造函数具有与类相同的名称,它通常初始化新对象的数据成员。

如下面示例:

public class myclass

{

        //下面为myclass类的构造函数

        public myclass()  //与类名相同的函数为类的构造函数

       {

       }

}

不带参数的构造函数称为类的“默认构造函数”。

只要使用 new 运算符实例化对象,并且不为 new 提供任何参数,就会调用默认构造函数。

除非类是 static 的,否则 C# 编译器将为无构造函数的类提供一个公共的默认构造函数,以便该类可以实例化。

通过将构造函数设置为私有构造函数,可以阻止类被实例化

如下例:

class myclass

{

       //用private 关键字来声明为私有构造函数

       private myclass()

      {

      }

}

结构类型的构造函数与类的构造函数类似,但是 structs 不能包含显式默认构造函数,因为编译器将自动提供一个构造函数。

只有当 struct 用 new 实例化时,才会调用此默认构造函数。

基于 structs 的对象(包括所有内置数值类型)可以初始化或赋值后使用。

因此对值类型调用默认构造函数不是必需的。

类和 structs 都可以定义具有参数的构造函数。带参数的构造函数必须通过 new 语句或 base 语句来调用。

类和 structs 还可以定义多个构造函数,并且二者均不需要定义默认构造函数。

构造函数可以使用 base 关键字来调用基类的构造函数。

基类的构造函数在执行构造函数块之前被调用。

base 关键字可带参数使用,也可不带参数使用。构造函数的任何参数都可用作 base 的参数

如果基类没有提供默认构造函数,派生类必须使用 base 显式调用基构造函数。

构造函数可以使用 this 关键字调用同一对象中的另一构造函数。和 base 一样,this 可带参数使用也可不带参数使用,构造函数中的任何参数都可用作 this 的参数

构造函数可以标记为 publicprivateprotectedinternal 或 protectedinternal。

这些访问修饰符定义类的用户构造该类的方式。

使用 static 关键字可以将构造函数声明为静态构造函数。

在访问任何静态字段之前,都将自动调用静态构造函数,它们通常用于初始化静态类成员

静态构造函数

静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。

在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。

静态构造函数特点:

  • 静态构造函数既没有访问修饰符,也没有参数。
  • 在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化
  • 无法直接调用静态构造函数。
  • 在程序中,用户无法控制何时执行静态构造函数。
  • 静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。
  • 静态构造函数在为非托管代码创建包装类时也很有用,此时该构造函数可以调用 LoadLibrary 方法。
  • 如果静态构造函数引发异常,运行时将不会再次调用该构造函数,并且在程序运行所在的应用程序域的生存期内,类型将保持未初始化。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Scrapy简单入门及实例讲解

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确...

    py3study
  • 小程序开发(一):使用scrapy爬虫

    过完年回来,业余时间一直在独立开发一个小程序。主要数据是8000+个视频和10000+篇文章,并且数据会每天自动更新。

    py3study
  • Python爬虫入门这一篇就够了

    所谓爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本。万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,不断的去抓取我们需要的信息。

    py3study
  • 关于Java构造函数(Constructor)的常见问题总结1 为什么调用子类的构造方法的时候,默认会调用父类的构造方法2 常见错误:Implicit super constructor is und

    当继承自一个类的时候,构造方法就会首先调用super()方法。如果没有显式的写这个语句,那么编译器就会自动插入这个语句。这就是为什么我们上面的那个例子程序会先调...

    desperate633
  • C#-构造函数

    创建一个类的时候,使用new运算符对类进行实例化。在为新对象分配内存之后,new运算符立即调用构造函数。

    祝你万事顺利
  • 构造函数浅析

    构造函数浅析<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

    ternturing
  • C#基础知识系列五(构造函数)

      2、不带参数的构造函数称为“默认构造函数”。 无论何时,只要使用 new 运算符实例化对象,并且不为 new 提供任何参数,就会调用默认构造函数。除非类是s...

    aehyok
  • 关于构造函数与析构函数的分享

    创建复杂的类类型的对象时,可能需要对一些数据或者对象中需要使用的资源进行一些初始化操作,比如设置成员的默认值,打开数据库,打开文件,等等,而这些准备工作,就可以...

    用户7053485
  • 认真理一理C++的构造函数

    我们在C语言中使用堆栈中的变量时,常常需要给它赋初始值,用于避免使用到了不可预知的值。同样的,在C++中也需要有这样的动作,只是由于C++的对象可能比基本数据要...

    编程珠玑
  • Scala-8.面向对象-构造函数

    悠扬前奏

扫码关注云+社区

领取腾讯云代金券