The name of the base class must come before any interface. Why?

Enclosed code would give you the "Class must come first before interface" error. I understand it is a rule, but can anybody tell me what the reason behind it?
public interface ITest
    {
        int ChildCount { get; set; }
    }
 
public class Test
    {
    }  
 
public class OrderPool : ITest, Test
    {
        public int ChildCount
        {
            get;
            set;
        }     
    }

Open in new window

LVL 3
redflairAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
philipjonathanConnect With a Mentor Commented:
I'm not sure why. But on the practical side, it's easier to read that way, because a class can implement multiple interface, but can only inherit directly from 1 base class. So by 1 glance, you would already know if a class inherits from a base class. If the base class can come in the middle of interface names, it might be a little harder to read, especially if it implements many interfaces.
0
 
rambovnCommented:
it is something like the params keyword.
0
 
ppittleConnect With a Mentor Commented:
Philip is on the rihgt path.  C# implements a restrictive form of polymorphism where a class can only inherit from one base class, but can implement multiple interfaces, as opposed to a language like C++ where you can inherit from multiple base classes.  The rational behind this, is you open several odd fringe cases and reap little benefits.  For example, lets say you create class ChildClass which is to inherit from BaseClass1 and BaseClass2.  Both BaseClass1 and BaseClass2 provide a custom ToString method.  So when you write "ChildClass.ToString()"  the compiler doesn't know whether to call BaseClass1.ToString() or BaseClass2.ToString(), so you would end up with some odd behavior.

To simplify the class declaration, a baseclass must be the first object folowing the semicolon.
0
All Courses

From novice to tech pro — start learning today.