当前位置 : 主页 > 编程语言 > c语言 >

c# – 首先调用链式构造函数的一个很好的理由?

来源:互联网 收集:自由互联 发布时间:2021-06-25
有人能给我一个很好的理由为什么在C#中链接的构造函数总是在任何构造函数体之前被调用? .NET允许您在构造函数中的任何位置调用链式构造函数,那么为什么C#强制您在构造函数体执行
有人能给我一个很好的理由为什么在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#

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

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

网友评论