加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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#

解决方法

使链式构造函数首先执行保证所有基类元素至少在派生类中可用,因为它们在基类中.允许链接的构造函数在任意点执行将是一种权衡,几乎没有明显的好处.

允许链式构造函数的任意入口点也会阻止延迟创建基类,因为这样的特性可能会运行链式构造函数两次.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读