gpt4 book ai didi

c# - 1 首先调用链式构造函数的充分理由?

转载 作者:行者123 更新时间:2023-11-30 14:20:58 25 4
gpt4 key购买 nike

谁能给我 1 个很好的理由,为什么在 C# 中,链式构造函数总是在任何构造函数主体之前调用?

.NET 允许您在构造函数中的任何位置调用链式构造函数,那么为什么 C# 会强制您在构造函数主体执行之前执行此操作?

我曾经写信给 Anders 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# 中

最佳答案

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

允许链式构造函数的任意入口点也排除了基类的惰性创建,因为这样的功能可能会运行链式构造函数两次。

关于c# - 1 首先调用链式构造函数的充分理由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/516844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com