c# – 首先调用链式构造函数的一个很好的理由?
发布时间:2020-12-16 01:29:49 所属栏目:百科 来源:网络整理
导读:有人能给我一个很好的理由为什么在C#中链接的构造函数总是在任何构造函数体之前被调用? .NET允许您在构造函数中的任何位置调用链式构造函数,那么为什么C#强制您在构造函数体执行之前执行它? 我曾写信给安德斯H并问过他,尽管他一定很忙,但他还是很乐意花时
有人能给我一个很好的理由为什么在C#中链接的构造函数总是在任何构造函数体之前被调用?
.NET允许您在构造函数中的任何位置调用链式构造函数,那么为什么C#强制您在构造函数体执行之前执行它? 我曾写信给安德斯H并问过他,尽管他一定很忙,但他还是很乐意花时间回复.不幸的是,他设法回答了我实际上没有问过的问题(关于命名的构造函数.) 所以,出于好奇,我想我会在这里问,因为我个人认为这个限制没有一个好的理由,所以希望我会再教育:-) 只是为了澄清. .NET CLR规则是必须调用1个构造函数,只有1个构造函数,并且只能调用一次.所以在CLR中这些都是有效的 public class Meh { public Meh() { Console.WriteLine("Meh()"); this("Hello"); } public Meh(string message) { Console.WriteLine("Meh {0}",message); base(); } } 但不是在C# 解决方法
使链式构造函数首先执行保证所有基类元素至少在派生类中可用,因为它们在基类中.允许链接的构造函数在任意点执行将是一种权衡,几乎没有明显的好处.
允许链式构造函数的任意入口点也会阻止延迟创建基类,因为这样的特性可能会运行链式构造函数两次. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |