Simply put yes, its not good form to do this and I'll tell you why. A bit later when your solution becomes big you will forget where the classes are as the file name will no longer represent what the contents are, What's your filename? Is it AnimalPersonObject.cs, that's not clear its multiple classes rather a single class called `AnimalPersonObject` Sure you can get around this by using features in tools like Resharper to jump to types, but 1 class per file (including interfaces) is really the backbone of any code standard I've ever seen, not just in .Net but in Java and C++ and lots of other languages, those that don't often have maintenance issues. As currently written you will find junior developers finding it hard to grasp the code. Almost all code optimisation tools will tell you to move the classes into a separate file, so for me yes this is a code smell and needs something to neutralise it :)