我的问题是我无法为构造函数调用此关键字,如下所示。
public UnitofWork(IDbTransaction transcation, Action<UnitofWork> onCommitOrRollback)
: this(transcation, onCommitOrRollback)
{
}
使用base
代替:
任何人都可以解释一下这个实例发生了什么问题。
该项目是类库,我在其中使用了一个名为UnitofWork
的类。这里,UnitofWork
是一个具有不同参数传递的构造函数。这些参数本身将再次为自己调用以进行事务处理。
答案 0 :(得分:2)
你有一个构造函数,它接受IDbTransaction
和Action<UnitofWork>
,并通过调用构造函数开始,该构造函数需要IDbTransaction
和Action<UnitofWork>
,也就是说自己。
然后立即调用自己,然后立即调用自己,然后立即调用自己......
如果允许,则会发生以下两种情况之一:
它会继续对自己进行这些调用,直到StackOverflowException
崩溃了应用程序。
堆栈的使用被优化掉了,所以它只是在无限循环中永远称自己。
无论哪种方式,它都是毫无意义的,所以它显然是错误的,所以编译器不允许你这样做是好的。
相反,构造函数必须:
this
在同一类型上调用不同的构造函数。base
调用基类型的构造函数。base()
调用基类型上的无参数构造函数相同。