初识C#——构造函数与析构函数

学习C#有一段时间了,但是在学习的过程中,经常遇到一些不懂得地方,还有在学习C#的过程中,还有时候能让自己不由自主的想起VB来,这两天遇到了VB中没有的两个函数,我觉的它们很重要,就总结了一下。

谈到这两个函数,不由自主的就与对象的生命周期联系起来了,当我们使用对象时,分为三个步骤,第一,构建阶段,第二,使用阶段,第三,释放阶段。这三个步骤中的第一步和第三步就用到了我刚才所说的构造函数与析构函数,我先说一下构造函数与析构函数在C#中的作用吧!

构造阶段:对象最初进行实例化的时期。这个初始化过程称为构造阶段,由构造函数完成。

析构阶段:在删除一个对象时,常常需要执行一些清理工作,例如,释放内存,这由析构函数完成。

1、构造函数

在构造阶段我们经常使用的就是构造函数,构造函数与类同名,没有返回值,在创建对象时执行,他的作用是在初始化对象的过程中,对需要初始化对象存储数据。构造函数就是用于初始化数据的函数。我的理解就是给初始化的对象赋值。

构造函数中还有一个静态构造函数,静态构造函数的作用是:在使用类中的静态成员时,需要预先初始化这些成员。在声明时,可以给静态成员提供一个初始值,但有时需要执行更复杂的初始化,或者在赋值、执行静态方法之前执行某些操作。

2、析构函数

对象使用完成之后,有时候我们需要清理它在计算机中所占的内存,这时候我们就用到了析构函数。

析构函数在程序结束时执行,通常在类前面加一个波浪线,一般情况下,.NETFramework使用析构函数清理对象时,不需要提供析构函数的代码,而是由默认的析构函数自动执行操作。但是,如果在删除对象实例前,需要完成一些重要的操作,就应提供特定的析构函数。例如,如果变量超出了范围,代码就不能访问它, 但该变量仍存在于计算机内存的某个地方。只有在.NET运行程序执行其垃极回收,进行清理时,该实例才被彻底删除。

3、总结

构建函数与析构函数的使用时间正好相反,构建函数时在创建对象的时候执行,析构函数是在程序结束的时候执行。析构函数与构建函数都没有返回值,构建函数可以带参数,但是析构函数不能够带参数。

时间: 2024-08-29 07:16:17

初识C#——构造函数与析构函数的相关文章

C++ 构造函数和析构函数

构造函数: 作用: 1)分配空间:分配非静态数据成员的存储空间 2)初始化成员:初始化非静态数据成员 分配空间: 1)含有指针变量,需要程序员显式申请空间(使用new申请) 2)非指针变量:由系统自动分配空间 初始化成员: 1)使用赋值语句初始化:一般的变量 2)使用表达式表初始化:一般的变量 +  Const成员,引用成员,对象成员 调用时机:在定义对象的时候,系统自动调用构造函数 1)对象被创建时,自动调用构造函数 Coord p1(1); Coord p2=1;  //此时也会调用构造函数

python中的构造函数和构造函数和析构函数的作用

构造函数和构造函数和析构函数都属于python中的特殊方法 其中的"__del__"就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间

.NET 基础 一步步 一幕幕[面向对象之构造函数、析构函数]

构造函数.析构函数 构造函数: 语法: //无参的构造函数 [访问修饰符] 函数名() :函数名必须与类名相同. //有参的构造函数 [访问修饰符] 函数名(参数列表):函数名必须与类名相同. 作用:帮助我们初始化对象(给对象的每个属性依次的赋值) 构造函数是一个特殊的方法: 1).构造函数没有返回值,连void也不能写. 2).构造函数的名称必须跟类名一样. 3).构造函数有无参和有参之分. 创建对象的时候会执行构造函数,构造函数是可以有重载的. *** 类当中会有一个默认的无参数的构造函数,

python中的构造函数和析构函数

python中的特殊方法,其中两个,构造函数和析构函数的作用: 比说“__init__”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这个函数里面.如下程序: 其中的“__del__”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间. 待深入……………………

构造函数和析构函数中得异常处理

一. 构造函数 总结如下: 1. 构造函数中抛出异常,会导致析构函数不能被调用,但对象本身已申请到的内存资源会被系统释放(已申请到资源的内部成员变量会被系统依次逆序调用其析构函数). 2. 因为析构函数不能被调用,所以可能会造成内存泄露或系统资源未被释放. 3. 构造函数中可以抛出异常,但必须保证在构造函数抛出异常之前,把系统资源释放掉,防止内存泄露.(如何保证???使用auto_ptr???) 试验代码: 1 //ExceptionConstructor.h 2 #pragma once 3

对C++中派生类的构造函数和析构函数的认识

一:构造函数 形式:派生类名::派生类名:基类名1(参数1),基类名2(参数2),--基类名n(参数n),数据成员1(参数1),数据成员2(参数2),--数据成员n(参数n){ 各种操作的说明 } 执行过程:先执行基类的构造函数,再进行数据成员的赋值,最后执行函数体. 其中基类名和数据成员的顺序是由在派生类的定义中声明的顺序决定执行的顺序的,因此它们的顺序是任意的,但为了可读性,还是最好按顺序写. 如果基类只有默认构造函数,则基类名和参数表可以不用写出来. 二:复制构造函数 派生类的构造函数的形

拷贝构造,深度拷贝,关于delete和default相关的操作,explicit,类赋初值,构造函数和析构函数,成员函数和内联函数,关于内存存储,默认参数,静态函数和普通函数,const函数,友元

 1.拷贝构造 //拷贝构造的规则,有两种方式实现初始化. //1.一个是通过在后面:a(x),b(y)的方式实现初始化. //2.第二种初始化的方式是直接在构造方法里面实现初始化. 案例如下: #include<iostream> //如果声明已经定义,边不会生成 class classA { private: int a; int b; public: //拷贝构造的规则,有两种方式实现初始化 //1.一个是通过在后面:a(x),b(y)的方式实现初始化 //2.第二种初始化的方式是直

c++学习笔记5,多重继承中派生类的构造函数与析构函数的调用顺序(二)

现在来测试一下在多重继承,虚继承,MI继承中虚继承中构造函数的调用情况. 先来测试一些普通的多重继承.其实这个是显而易见的. 测试代码: //测试多重继承中派生类的构造函数的调用顺序何时调用 //Fedora20 gcc version=4.8.2 #include <iostream> using namespace std; class base { public: base() { cout<<"base created!"<<endl; }

C++C++中构造函数与析构函数的调用顺序

http://blog.csdn.net/xw13106209/article/details/6899370 1.参考文献 参考1: C++继承中构造函数.析构函数调用顺序及虚函数的动态绑定 参考2: 构造函数.拷贝构造函数和析构函数的的调用时刻及调用顺序 参考3: C++构造函数与析构函数的调用顺序 2.构造函数.析构函数与拷贝构造函数介绍 2.1构造函数 构造函数不能有返回值 缺省构造函数时,系统将自动调用该缺省构造函数初始化对象,缺省构造函数会将所有数据成员都初始化为零或空 创建一个对象