Calling an overridable method from a constructor could result in failures or strange behaviors when instantiating a subclass which overrides the method. For example: * The subclass class constructor starts by calling the parent class constructor. * The parent class constructor calls the method, which has been overridden in the child class. * If the behavior of the child class method depends on fields that are initialized in the child class constructor, unexpected behavior (like a ``++NullReferenceException++``) can result, because the fields aren't initialized yet. == Noncompliant Code Example ---- public class Parent { public Parent() { DoSomething(); // Noncompliant } public virtual void DoSomething() // can be overridden { ... } } public class Child : Parent { private string foo; public Child(string foo) // leads to call DoSomething() in Parent constructor which triggers a NullReferenceException as foo has not yet been initialized { this.foo = foo; } public override void DoSomething() { Console.WriteLine(this.foo.Length); } } ---- ifdef::env-github,rspecator-view[] ''' == Comments And Links (visible only on this page) include::comments-and-links.adoc[] endif::env-github,rspecator-view[]