广告
返回顶部
首页 > 资讯 > 精选 >C#如何构造函数
  • 524
分享到

C#如何构造函数

2023-06-17 22:06:01 524人浏览 泡泡鱼
摘要

本篇内容主要讲解“C#如何构造函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#如何构造函数”吧!CLR Via C#中构造函数是可以将类型实例初始化为有效状态的特殊方法。构造函数在元数据中

本篇内容主要讲解“C#如何构造函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#如何构造函数”吧!

CLR Via C#中构造函数是可以将类型实例初始化为有效状态的特殊方法。构造函数在元数据中通常用.ctor来表示,通过IL代码可以看到。在创建一个类型的实例时,通常分为三步:

1 为实例的数据字段分配内存。

2 创建对象指针和同步索引块。

3 调用类型的实例构造器来设置对象的初始状态。

CLR Via C#中引用类型的实例构造器

在创建一个引用类型的对象是,调用类型的实例构造函数之前,会将对象分配的内存做清零处理,就是说在构造函数中没有显示赋值的所有字段都将设置为0或null。

实例构造函数和一般方法不同,他永远都不能被继承,所有以下的关键字也不能用于实例构造函数(virtual new override sealed abstract)。

一个类中如果没有显示定义任何构造函数,C#编译器将定义一个默认的无参构造函数。

抽象(abstract)类的默认构造函数的访问修饰符为protected。

构造函数可以初始化字段,不过在c#语言中提供了一种简单的方法,在定义字段的时候直接赋值以初始化。如下:

public class User2  {     private int _age = 25;     private string _name = "oec2003";  }

像上面那样的确很方便,但如果有好几个已经初始化的实例字段和多个重载的构造函数同时存在的情况下,就应该将实例字段的初始化放到一个公共的构造函数中,其他的构造函数通过this来显示调用该构造函数,这样可以减少代码生成的大小,看下面的例子。

public abstract  class User  {      private int _age=25;      private string _name="oec2003";      private string _email = "oec2003@gmail.com";       public User(Int32 age)      {          this._age = age;     }      public User(string name)     {         this._name = name;     }      public User(Int32 age, String name, String email)     {         this._age = age;         this._name = name;         this._email = email;     }

正确的写法应该像下面这样

public abstract  class User  {      private int _age;      private string _name;      private string _email;       public User()      {           _age=25;          _name="oec2003";          _email = "oec2003@gmail.com";      }       public User(Int32 age):this()      {          this._age = age;      }       public User(string name):this()      {          this._name = name;      }       public User(Int32 age, String name, String mail):this()      {          this._age = age;          this._name = name;          this._email = email;      }  }

CLR Via C#中值类型的实例构造函数

值类型的实例构造函数和引用类型的有很大不同,在值类型中不能含有无参的构造函数,如果显式指定无参的构造函数将会出现编译错误。如下面代码会出现编译错误:

struct User  {      public Int32 _age;       public String _name;        public User()      {           _age = 25;           _name = "oec2003";      }  }

值类型不能包含无参的构造函数,也不能在值类型中给字段进行初始化,下面的代码也将不能通过编译。

public struct User  {      public Int32 _age=25;      public String _name="oec2003";  }

在值类型中也可以有构造函数,不过该构造函数必须含有参数,而且要初始化所有的字段。含有参数但没有初始化所有字段的构造函数也不能通过编译。看下面代码:由此可见如果值类型中显示包含构造函数必须要初始化所有的字段。

如果有多个构造函数,每个构造函数也必须保证初始化所有的字段,否则不能通过编译。如果值类型中不包含构造函数,实例化时所有字段将设置为0或null。

public struct User   {       public Int32 _age;       public String _name;       //只初始化了_age       public User(Int32 age)       {           _age = age;       }      public User(Int32 age,String name)      {          _age = age;          _name = name;      }  }

CLR Via C#中类型构造函数

类型构造函数也被称为静态构造函数。静态构造函数可以用于引用类型和值类型。和实例构造函数不同的是静态构造函数在一个类型中永远只有一个,并且不能包含参数。静态构造函数中只能初始化静态字段。

下面代码分别展示在值类型(和实力构造函数不同,值类型中允许显示定义无参的静态构造函数)和引用类型中的静态构造函数。

//值类型   public struct User  {       public static Int32 _age ;           public static String _name;        static User()       {           _age = 25;          _name = "oec2003";      }  }  //引用类型  public class User  {      public static Int32 _age ;          public static String _name;       static User()      {          _age = 25;          _name = "oec2003";      }  }

为了防止开发人员编写的代码调用静态构造函数,C#编译器会将静态构造函数定义为私有(private)的,并且不能显示地给静态构造函数添加访问修饰符,如果这么做了会出现编译错误。

上面讲到过在值类型中不能在定义是给实例字段赋值,否则会编译错误,但可以在定义时给静态字段赋值,看下面代码:

public struct User  {    public static Int32 _age = 25;    //正确 可以初始化静态字段      public String _name = "oec2003";  //错误 不能初始实例字段  }

CLR Via C#中静态构造函数不应该去调用基类的静态构造函数,因为静态字段是不会被继承到子类中,所以这样做没有意义。

到此,相信大家对“C#如何构造函数”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: C#如何构造函数

本文链接: https://www.lsjlt.com/news/293408.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#如何构造函数
    本篇内容主要讲解“C#如何构造函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#如何构造函数”吧!CLR Via C#中构造函数是可以将类型实例初始化为有效状态的特殊方法。构造函数在元数据中...
    99+
    2023-06-17
  • C++:构造函数,析构函数详解
    目录前言一、面向对象二、构造函数1.基本概念2.构造函数重载1.构造函数分类2.有参构造函数:3.有参构造函数3个调用规则:4.拷贝构造函数5.析构函数总结前言 上期了解C++类中有...
    99+
    2022-11-12
  • 详解C++构造函数
    目录1.作用2.代码举例2.1 示例1:2.2 示例2:3. 使用3.1 使用构造函数初始化3.2 有参数的构造函数3.3 默认的构造函数4. 成员初始化列表例1:正常初始化例2:成...
    99+
    2022-11-12
  • C#构造函数详解
    一、简介 构造函数,基本用法是在类对象声明的时候完成初始化工作。 二、实例构造函数 1、构造函数的名字与类名相同。 2、使用 new 表达式创建类的对象或者结构(例如int)时,会调...
    99+
    2022-11-13
  • C++构造函数详解
    文章转自公众号:Coder梁(ID:Coder_LT) 上一篇文章我们介绍了定义了类,在使用之前,往往还需要对类进行初始化。这篇介绍的就是对类进行初始化的方法。 像是结构体,我们可以...
    99+
    2022-11-12
  • C#中构造函数如何使用
    C#中构造函数如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#构造函数在使用方面及行为方面的一些特殊规则:如果开发人员没有为一个类提供构造函数,那么,...
    99+
    2023-06-17
  • C++类构造函数如何使用
    本篇文章给大家分享的是有关C++类构造函数如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。所谓C++类是定义同一类所有对象的变量和方法的蓝图或原型,C++类体内的成员是需...
    99+
    2023-06-17
  • C#中如何使用结构体构造函数
    本篇文章给大家分享的是有关C#中如何使用结构体构造函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。///〈summary〉  ///启动服务端的参数结构&...
    99+
    2023-06-17
  • 如何对C++虚基类构造函数
    这篇文章将为大家详细讲解有关如何对C++虚基类构造函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。下面详细介绍C++虚基,所谓C++虚基类:是由最派生类的构造函数通过调用虚基类的构造函数进...
    99+
    2023-06-17
  • C++修炼之构造函数与析构函数
    目录🌷默认成员函数🌷构造函数🌺引例🌺构造函数的概念及特性🌷析构函数🌺析构函数的特性🌷默认成员函数 上一章中我们谈到,如果一个类中什么成员也没有,那么这个类就叫作空类。其实这么说是不太...
    99+
    2023-05-14
    C++构造函数概念 C语言析构函数特性
  • C++中构造函数详解
    构造函数按参数为为:有参构造函数和无参构造函数 按类型分为:普通构造函数和拷贝构造函数 构造函数的三种调用方法:括号法,显示法,隐式转换法; //括号法 Person p1; ...
    99+
    2022-11-13
  • C#中怎么构造函数
    本篇内容介绍了“C#中怎么构造函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#构造函数大体上分为静态C#构造函数和实例C#构造函数,实...
    99+
    2023-06-18
  • C++构造函数怎么用
    这篇文章给大家分享的是有关C++构造函数怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.作用一种特殊类型的方法,在每次实例化对象时运行2.代码举例2.1 示例1:#include <ios...
    99+
    2023-06-25
  • C++的构造函数和析构函数是什么
    本篇内容主要讲解“C++的构造函数和析构函数是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++的构造函数和析构函数是什么”吧!目录一、构造函数二、C++类的内存模型1、只定义成员函数2、...
    99+
    2023-06-20
  • C++构造函数与析构函数怎么使用
    这篇文章主要讲解了“C++构造函数与析构函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++构造函数与析构函数怎么使用”吧!对象的初始化和清理生活中我们买的电子产品都基本会有出厂...
    99+
    2023-07-02
  • C#中静态构造函数如何使用
    C#中静态构造函数如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#静态构造函数是一个新特性,其实好像很少用到。不过当我们想初始化一些静态变量的时候就需要用到它了。...
    99+
    2023-06-17
  • c++特殊构造函数详解
    目录前言拷贝构造函数一、什么是拷贝构造函数二、调用时机注意浅拷贝和深拷贝总结前言 众所周知,构造函数的作用是类在创建对象时的初始化,而拷贝构造函数则是构造函数里的一种特殊构造。 拷贝...
    99+
    2022-11-12
  • C++中的构造函数详解
    目录普通变量的初始化构造函数一定会生成默认构造函数吗?防止隐式类型转换赋值与初始化的区别对象的计数成员初始化的顺序类的引用成员构造函数使用注意事项参考总结普通变量的初始化 当我们在定...
    99+
    2022-11-12
  • C#构造函数怎么实现
    本篇内容介绍了“C#构造函数怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!选择C#构造函数基类对象总是在任何派生类之前构造的。因此基...
    99+
    2023-06-17
  • C++构造函数怎么使用
    这篇文章主要讲解了“C++构造函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++构造函数怎么使用”吧!像是结构体,我们可以使用列表初始化的方法进行初始化:struct ...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作