在C#中,从构造函数调用虚方法是否安全?语言规范说什么?请从规范中引用。通过 safe ,我的意思是它会调用派生类的实现吗?
这个疑问存在于我的脑海中,因为在C ++中,从构造函数调用虚函数是不安全。
答案 0 :(得分:6)
你可以做到,但你不应该这样做。我认为C#甚至会给你一个警告。
当函数被派生类覆盖时,它变得非常危险,因为您现在在调用派生类的构造函数之前调用该函数。
答案 1 :(得分:1)
这不安全,因为在匹配构造函数有机会建立类不变量之前会调用虚函数。
相比之下,它在C ++中是安全的 - 被调用的函数在匹配构造函数中被调用,而不是之前。