这是【C# 教程系列第 9 篇】,如果觉得有用的话,欢迎关注专栏。
前面两篇博客已经讲了什么是构造函数 ,什么是析构函数 。
不知道大家有没有和我同样的疑问,一个类的实例在创建时真的会调用构造函数,在被销毁时调用析构函数吗?
有没有办法来验证呢?
都这样问了,肯定会有啊,哈哈。下面是我在一本 C# 学习笔记里的书中看到的验证方法,分享给大家,而且方法也不复杂,下面就来验证一下上述问题吧。
一:启动 Visual studio 开发环境,然后新建一个控制台应用程序,在 Program.cs文件中定义一个 MyTest类 ,代码如下
public class MyTest
{
//构造函数
public MyTest()
{
System.Diagnostics.Debug.WriteLine("类开始实例化,构造函数被调用");
Console.WriteLine("构造函数");
}
~MyTest()
{
System.Diagnostics.Debug.WriteLine("程序退出,析构函数被调用");
Console.WriteLine("析构函数");
}
}
在 MyTest 类的构造函数和析构函数中分别使用 System.Diagnostics.Debug.WriteLine方法来输出调试信息,
这里我自己加上了 Console. WriteLine 方法,不过这里写了也没有用,因为当Test类的实例被回收时,应用程序已经结束,我们是看不到输出结果的,这里我顺手加上去是为了更显著的对比效果。
而使用 Debug类输出的内容是显示在 Visual Studio 的“输出”窗口中,程序退出后这些信息还会保留,如果其中包含相关的文本就说明构造函数和析构函数被调用过。
接下来,在 Main 入口点中加入以下代码,创建 MyTest 类的实例。
class Program
{
static void Main(string[] args)
{
MyTest test=new MyTest();
}
}
二:按下 F5 键调试运行,不过很快应用程序就退出了。
然后,通过菜单栏中的【视图】→【输出】”窗口中看到下图所示的内容 通过上图我们可以很清楚的看到通过 System.Diagnostics.Debug.WriteLine 方法输出的话显示在了日志上,这也说明 MyTest 类的构造函数和析构函数是被调用了的。
此外,通过 Console. WriteLine 方法却并未打印,这也验证了前面说的那段话。
至此,验证构造函数与析构函数便叙述完毕,又是这个点,洗洗脸睡觉去了。 各位,晚安!
你的问题得到解决了吗?欢迎在评论区留言。
赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。
结束语 技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。 最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。