`

C#构造函数

    博客分类:
  • C#
阅读更多

一、C#构造函数?Construct,Function

构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对数据成员进行初始化.

构造函数具有一些特殊的性质:

(1)构造函数的名字必须与类同名;

(2)构造函数没有返回类型,它可以带参数,也可以不带参数;

(3)声明类对象时,系统自动调用构造函数,构造函数不能被显式调用;

(4)构造函数可以重载,从而提供初始化类对象的不同方法;

(5)若在声明时未定义构造函数,系统会自动生成默认的构造函数,此时构造函数的函数体为空.

(6)静态构造函数,static修饰,用于初始化静态变量,一个类只允许有一个构造函数,在类实例化时加载,这时修饰符publicprivate失去作用.

(7)可以使用publicprotectedprivate修饰符。.

(8)引用父类构造时用():base()方法,引用自身重载的构造使用():thisint para.

(7)可以使用publicprotectedprivate修饰符。

注意:

1、定义了一个带参构造函数后,最好定义一个无参构造函数,这样可以避免子类调用时出错

2、调用基类构造函数:base() 或 :base(参数列表)  调用本类其它构造函数 :this() 或 :this(参数列表)

3、只有在用base显示调用父类的构造函数时,程序才不会默认的调用不带参数的构造函数。

 

二、C#构造函数的结构层次关系或者说执行顺序是怎样的?Layer,Transfer,Execute

从基类开始构造对象。

public class MyBaseClass
    
{
        
public MyBaseClass()
        
{
            Console.WriteLine(
"In MyBaseClass()");
        }

        
public MyBaseClass(int i)
        
{
            Console.WriteLine(
"In MyBaseClass(int i)");
        }

    }

    
public class MyDerivedClass : MyBaseClass
    
{
        
public MyDerivedClass()
        
{
            Console.WriteLine(
"In MyDerivedClass()");
        }

        
public MyDerivedClass(int i)
        
{
            Console.WriteLine(
"In MyDerivedClass(int i)");
        }

        
//public MyDerivedClass(int i, int j)
        
//{
        
//    Console.WriteLine("In MyDerivedClass(int i,int j)");
        
//}
        public MyDerivedClass(int i, int j)
            : 
base(i)
        
{
            Console.WriteLine(
"In MyDerivedClass(int i,int j):base(i)");
        }

    }

    
class Program
    
{
        
static void Main(string[] args)
        
{
            
//Event1
            MyDerivedClass myObj1 = new MyDerivedClass();
            Console.WriteLine();
            
//Event2
            MyDerivedClass myObj2 = new MyDerivedClass(4);
            Console.WriteLine();
            
//Event3
            MyDerivedClass myObj3 = new MyDerivedClass(4,8);
            Console.WriteLine();
            Console.ReadKey();
        }

    }

 

程序输出:

 

In MyBaseClass()

In MyDerivedClass()

 

In MyBaseClass()

In MyDerivedClass(int i)

 

In MyBaseClass(int i)

In MyDerivedClass(int i,int j):base(i)

很明显,只有在用base显示调用父类的构造函数时,程序才不会默认的调用不带参数的构造函数。

分享到:
评论

相关推荐

    c#构造函数的调用过程

    ### C#构造函数的调用过程 在C#编程语言中,构造函数是一种特殊类型的方法,主要用于初始化对象的状态。构造函数的名字与类名相同,并且没有返回类型。当创建一个新对象时,构造函数会自动被调用。本文将通过一个...

    C#构造函数的理解

    ### C#构造函数的理解 #### 一、构造函数的基本概念 构造函数是一种特殊的方法,用于初始化新创建的对象。在C#中,构造函数的名字与类名相同,这有助于明确指出其用途。当创建一个类的新实例时,系统会自动调用...

    c# 构造函数 内存分析 图解

    c# 构造函数 内存分析 图解,帮助你进一步理解构造函数。

    c#析构构造函数c#析构构造函数c#析构构造函数

    C#中的析构构造函数(Destructor)是一种特殊的方法,它在对象即将被垃圾回收器清除时执行,用于释放非托管资源。在C#中,析构函数以`~`符号开头,后面跟着类名,例如`~MyClass()`. 它们不同于常规的构造函数,构造...

    C#构造函数平均值方法

    标题“C#构造函数平均值方法”和描述中的内容涉及到C#编程语言中的基础概念,包括类的构造函数和方法的使用。下面详细介绍这些知识点: 首先,构造函数是类的一种特殊方法,它在创建类的新实例时自动调用。构造函数...

    c#构造函数与析构函数.doc

    c#构造函数与析构函数.doc

    C#构造函数 文档

    C#构造函数,电子书!!!!!!!!!!!!!!!

    C#构造函数调用顺序[归纳].pdf

    C#构造函数调用顺序[归纳].pdf

    第八章 C#构造函数.docx

    在C#编程语言中,构造函数是至关重要的组成部分,它们用于初始化类的实例。构造函数与类名相同,且在创建对象时自动调用。本章主要探讨了两种类型的构造函数:实例构造函数和静态构造函数。 1. 实例构造函数: - ...

    一起学C#:构造函数和析构函数.rar

    在C#编程语言中,构造函数和析构函数是两个非常关键的概念,它们在对象生命周期管理中起到至关重要的作用。让我们深入探讨一下这两个概念及其在实际编程中的应用。 首先,构造函数是C#中用于初始化新创建对象的方法...

    C#中构造函数和析构函数的用法

    构造函数与析构函数是一个类中看似较为简单的两类函数,但在实际运用过程中总会出现一些意想不到的运行错误。本文将较系统的介绍构造函数与析构函数的原理及在C#中的运用,以及在使用过程中需要注意的若干事项。

    C#构造函数属性小程序,请将它复制并黏贴。

    在C#编程语言中,构造函数和属性是两个核心概念,它们在定义和管理类的实例时发挥着至关重要的作用。下面将详细解释这两个概念及其使用方法。 **构造函数** 构造函数是类的一个特殊方法,它的主要职责是在创建类的...

    c#编写构造函数代码

    根据给定的信息,我们可以深入探讨C#中的构造函数与析构函数的概念,特别是关于它们的调用顺序以及如何实现继承中的构造。 ### C#中的构造函数 #### 构造函数的作用 构造函数是一种特殊的方法,用于初始化新创建的...

    C#MVC实现带参数的构造注入

    在C# MVC中,我们可以通过Castle Windsor来实现在控制器中带有参数的构造函数注入。 首先,我们需要了解什么是依赖注入。依赖注入是一种设计模式,其核心思想是将依赖关系从代码中解耦出来,使得组件之间可以独立地...

    C# 构造函数如何调用虚方法

    C# 构造函数如何调用虚方法 C# 构造函数如何调用虚方法是一个重要的知识点,了解这个问题可以帮助开发者更好的理解和使用 C# 语言中的虚方法和构造函数。 首先,需要了解什么是虚方法。在 C# 中,用 virtual ...

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

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

    dotnet C# 如果在构造函数抛出异常 是否可以拿到对象赋值的变量.rar

    以上就是关于标题和描述中提到的C#构造函数和异常处理的知识点,对于开发者来说,理解这些概念有助于编写更健壮和可靠的代码。通过深入学习这些原理,你可以更好地管理对象生命周期,避免潜在的程序错误。

Global site tag (gtag.js) - Google Analytics