Calling a virtual method in a constructor: what is the danger and how to avoid it?
Hello everyone! I'm a beginner C# developer, and recently ReSharper started giving me a warning "Virtual member call in a constructor" on this code:
```csharp
public class Animal
{
public string Name { get; set; }
public Animal(string name)
{
Initialize(name);
}
public virtual void Initialize(string name)
{
Name = name;
Console.WriteLine("Animal initialized");
}
}
public class Dog : Animal
{
public string Breed { get; set; }
public Dog(string name, string breed) : base(name)
{
// Empty
}
public override void Initialize(string name)
{
base.Initialize(name);
Breed = "Unknown";
Console.WriteLine("Dog initialized");
}
}
```
The code seems to work
No answers yet.
Log in to leave an answer
Blogs