举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > c#构造函数的作用 C# 构造函数

c#构造函数的作用 C# 构造函数

2023-02-26 01:18 C#教程

c#构造函数的作用 C# 构造函数

c#构造函数的作用

C#构造函数是一种特殊的方法,它在创建对象时被调用。它的主要作用是初始化对象,即为对象的字段赋值。构造函数可以有参数,也可以没有参数。如果一个类中不存在任何构造函数,那么系统会自动生成一个无参的默认构造函数。

C#中的构造函数有多种形式,其中包括无参、带参、静态、多重、隐式和显式等。无参构造函数是最常用的一种形式,它不带任何参数,并且在创建对象时会自动执行。带参构造函数是一种特殊的方法,它允许在创建对象时传入一些必要的信息,这些信息将用于初始化该对象。

静态构造函数是一种特殊的方法,它不能使用new关键字来创建对象,而是在使用该类之前就会执行。多重构造函数是一种特性,它允许向同一个类中定义多个不同形式的重载版本的方法来初始化该对象。隐式和显式都是C#中特有的形式,隐式表明不使用new关键字来创建对象而显式表明使用new关键字来创建对象。

public class Student 
{ 
    public string Name; 

    // 无参数的构造函数 
    public Student() 
    { 
        Name = "N/A"; 
    } 

    // 带1个string参数的构造函数 
    public Student(string name) 
    { 
        Name = name; 
    }  

    // 静态方法  
    static Student()  
    {  

        Console.WriteLine("Static Constructor Called");  

    }  

     // 多重重写  

     public Student(int id, string name) : this(name)  

     {  

         Console.WriteLine("Multi-parameter Constructor Called");  

     }  

     // 隐式重写  

     public Student(int id) : this()  

     {  

         Console.WriteLine("Implicit Constructor Called");  

     }     															} 

C# 构造函数

C#构造函数

实例构造函数

构造函数在类或结构体上运行初始化代码。

构造函数被定义为一个方法。

构造函数具有与类型相同的名称,并且没有返回类型:


public class Person {
   string name; // Define field
   public Person (string n){ // Define constructor
      name = n;              // Initialization code
   } 
} 
...
Person p = new Person ("CSS"); // Call constructor 

实例构造函数允许以下修饰符:

项目修饰符
访问修饰符public internal private protected
非托管代码修饰符unsafe extern

重载构造函数

类或结构可能重载构造函数。

为了避免代码重复,一个构造函数可以使用this关键字调用另一个构造函数:


using System; 

public class Product {
   public decimal Price;
   public int Year;
   
   public Product (decimal price) { 
      Price = price; 
   }
   public Product (decimal price, int year) : this (price) { 
     Year = year; 
   } 
} 

当一个构造函数调用另一个时,被调用的构造函数首先执行。

我们可以将表达式传递给另一个构造函数,如下所示:


public Product (decimal price, DateTime year) : this (price, year.Year) { 
} 

表达式本身不能使用这个引用。


隐式无参构造函数

对于类,当且仅当我们没有定义任何构造函数时,C#编译器自动生成一个无参数的公共构造函数。

对于结构体,无参数构造函数是struct的固有的;因此,我们不能定义我们自己的无参数构造函数。

构造函数和字段初始化顺序

我们之前看到字段可以在它们的声明中用默认值初始化:


class Sprite {
   int shields = 50; // Initialized first
   int health = 100; // Initialized second 
} 

字段初始化发生在执行构造函数之前,并且在字段的声明顺序中。

非公共构造函数

构造函数不需要公开。

有一个非公共构造函数的常见原因是通过静态方法调用来控制实例创建。


public class Class1 { 
    Class1() {} // Private constructor 
    
    public static Class1 Create (...) {
       // call Class1 constructor here
    } 
} 

静态构造函数

静态构造函数对每个类型执行一次,而不是每个实例执行一次。

类型只能定义一个静态构造函数,它必须是无参数的,并且具有与类型相同的名称:


class Main {
    static Main () { 
       Console.WriteLine ("Type Initialized"); 
    } 
} 

运行时在所使用的类型之前自动调用静态构造函数。

有两件事情触发了:

  • 实例化类型
  • 访问类型中的静态成员

静态构造函数允许的唯一修饰符是unsafe和extern。

静态字段初始化器在调用静态构造函数之前运行。

阅读全文
以上是编程学为你收集整理的c#构造函数的作用 C# 构造函数全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  • c#语法大全 C# 语法

    c#语法大全 C# 语法

    2023-02-24 C#教程

    C#语法C#语法的灵感来自C和C ++语法。它与Java也有类似的语法。在本节中,我们将使用以下程序来描述C#的语法元素:using Syste...

  • c#输出excel文件 C# 文件的输入与输出

    c#输出excel文件 C# 文件的输入与输出

    2023-02-24 C#教程

    C# 文件的输入与输出一个 文件 是一个存储在磁盘中带有指定名称和目录路径的数据集合。当打开文件进行读写时,它变成一个 流。 ...

  • 预定义特性 C# 特性(Attribute)

    预定义特性 C# 特性(Attribute)

    2023-02-25 C#教程

    C# 特性(Attribute)特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声...

  • c#环境搭建 C# 环境

    c#环境搭建 C# 环境

    2023-02-24 C#教程

    在这一章中,我们将讨论创建 C# 编程所需的工具。我们已经提到 C# 是 .Net 框架的一部分,且用于编写 .Net 应用程序。因此,在讨...

  • c#循环语句 C# 循环

    c#循环语句 C# 循环

    2023-02-27 C#教程

    有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推...

© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部