Avatar ·

Aufruf einer virtuellen Methode im Konstruktor: Was ist die Gefahr und wie vermeidet man sie?

Hallo zusammen! Ich bin ein Anfänger in C# und vor kurzem hat ReSharper angefangen, mir eine Warnung "Virtual member call in a constructor" für diesen Code anzuzeigen:\n\n```csharp\npublic class Animal\n{\n public string Name { get; set; }\n\n public Animal(string name)\n {\n Initialize(name);\n }\n\n public virtual void Initialize(string name)\n {\n Name = name;\n Console.WriteLine("Animal initialized");\n }\n}\n\npublic class Dog : Animal\n{\n public string Breed { get; set; }\n\n public Dog(string name, string breed) : base(name)\n {\n // Leer\n }\n\n public override void Initialize(string name)\n {\n base.Initialize(name);\n Breed = "Unknown";\n Console.WriteLine("Dog initialized");\n }\n}\n```\n\nDer Code scheint zu funktionieren