温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#中构造函数和析构函数的区别是什么

发布时间:2021-06-21 19:04:21 来源:亿速云 阅读:287 作者:Leah 栏目:编程语言

这篇文章将为大家详细讲解有关C#中构造函数和析构函数的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

C#构造函数和析构函数

在你可以访问一个类的方法、属性或任何其它东西之前, ***条执行的语句是包含有相应类的C#构造函数和析构函数。甚至你自己不写一个构造函数,也会有一个缺省的构造函数提供给你。

class TestClass  {  public TestClass(): base() {}   // 由编译器提供  }

一个构造函数总是和它的类名相同,但是,它没有声明返回类型。总之,构造函数总是public的,你可以用它们来初始化变量。

public TestClass()  {  // 在这给变量  // 初始化代码等等。  }

如果类仅包含静态成员(能以类型调用,而不是以实例调用的成员),你可以创建一个private的构造函数。

private TestClass() {}

尽管存取修饰符在这一章的后面将要大篇幅地讨论,但是private意味着从类的外面不可能访问该构造函数。所以,它不能被调用,且没有对象可以自该类定义被实例化。并不仅限于无参数构造函数——你可以传递初始参数来初始化成员。

public TestClass(string strName, int nAge) { …… }

作为一个C/C++程序员,你可能习惯于给初始化写一个附加的方法,因为在构造函数中没有返回值。当然,尽管在C#中也没有返回值,但你可以引发一个自制的异常,以从构造函数获得返回值。更多有关异常处理的知识在第七章 "异常处理"中有讨论。

但是,当你保留引用给宝贵的资源,应该想到写一个方法来解决:一个可以被显式地调用来释放这些资源。问题是当你可以在析构函数(以类名的前面加"~"的方式命名)中做同样的事情时,为何还要写一个附加的方法。

public ~TestClass()  {  // 清除  }

你应该写一个附加方法的原因是垃圾收集器,它在变量超出范围后并不会立即被调用,而仅当间歇期间或内存条件满足时才被触发。当你锁住资源的时间长于你所计划的时间时,它就会发生。因此,提供一个显式的释放方式是一个好主意,它同样能从析构函数中调用。

public void Release()  {  // 释放所有宝贵的资源  }  public ~TestClass()  {  Release();  }


关于C#中构造函数和析构函数的区别是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI