С#. Почему нужно прописывать using System.ChildNamespace, когда уже указано using System?
Не должно, это логически разные зоны видимости. Плюсом в разных namespace могут находится классы с одинаковыми именами, тут у вас компилятор сойдет с ума, и на каждое упоминание класса вам надо делать будет уточнение в виде полного имени.
Часто вообще можно не писать using, а классы всегда указывать полностью:System.Int32 i = 10;
System.Console.WriteLine("Строка");
System.Collections.Generic.List<int> list = new System.Collections.Generic.List<int>();
Но если указать using-и, то можно писать меньше (а значит, почти всегда лучше):Int32 i = 10;
Console.WriteLine("Строка");
List<int> list = new List<int>();
Если в одном файле используются два разных класса с одинаковым именем, то в этом случае можно написать один из классов через using, а второй - написать полное имя. А можно создать псевдоним класса:using IntList = System.Collections.Generic.List<int>;

IntList lst = new IntList();
List<double> lst2 = new List<double>();
В общем, using-и используются для удобства - меньше писать.
P.S. Если использовать Resharper, то он покажет, что здесь имеются лишние пространства имён: imgur.com/kYvWJqe В таком случае серые слова можно безопасно убрать.