C# 如何判断一个构造函数是否被另一个构造函数调用?

C# 如何判断一个构造函数是否被另一个构造函数调用?,c#,constructor,C#,Constructor,在C#中链接构造函数时,我如何轻松判断构造函数是直接调用的,还是由另一个构造函数使用this调用的 public Test() : this(string.Empty, string.Empty) {} public Test(string helloworld) : this(helloworld, string.Empty){} public Test(string helloworld, string goodbyeworld) { //do work } 如果出于某种原因,您确实

在C#中链接构造函数时,我如何轻松判断构造函数是直接调用的,还是由另一个构造函数使用
this
调用的

public Test() : this(string.Empty, string.Empty) {}
public Test(string helloworld) : this(helloworld, string.Empty){}
public Test(string helloworld, string goodbyeworld)
{
   //do work
}

如果出于某种原因,您确实需要这样做(而且您几乎不需要这样做),可以通过将“主”构造函数设置为私有或受保护,并添加另一个参数来指示使用了哪个其他构造函数来实现


我意识到这是一个有点荒谬的答案,但问题也有点荒谬。

它并不完全准确,但您可以检查调用堆栈。有关更多信息,请参见此问题


出于好奇,您为什么需要知道这一点?请添加一个示例。我不明白你说的“主人”是什么意思如果你需要这个,你就做错事了是的-我混淆了通话顺序。我没有问题。首先调用我的主构造函数,然后调用另一个。我以为这是另一种方式。这不是问题…正在标记它。看到构造函数了吗?上面代码示例的最后一个。。。以上共有3名施工人员。一,二,三。3在2之后,2在1之后。上面的第三个构造函数是上面代码示例中出现的最后一个构造函数。再详细说明一下这个例子:如果我有一排猪,3只猪,那么最后一只猪就是最后一只猪,第三只猪。