From a C++ background, this came like a surprise in my experience. In C++ it is good practice to create virtual functions private. From http://world wide "Guideline #2: Would rather make virtual functions private."

I additionally quote Eric Lippert's blog, from in combat-knaves-protected-and-internal.aspx: "Private virtual techniques are illegal in C#, which irks me to no finish. I'd totally use which include as we been with them.Inch

I realize that in C#, you would not have the ability to override a personal virtual method inside a derived (although not nested) class. Why the situation? In C++ the access specifier is not related to whether you are able to override a function or otherwise.