Does using System.Text; that I use a single namespace with the name "System.Text", or that I use the namespace "Text" nested in the namespace "System"?
Last. You are using the Text namespace, which is nested inside the System namespace.
Please note that when you speak
namespace Foo.Bar.Blah { class C { ...
This is just a short way to write.
namespace Foo { namespace Bar { namespace Blah { class C { ...
Namespaces have only "simple" names.
Should there be an explicit "using" directive for each namespace used?
Usually yes. There are some situations in which you might want to not do this. For example, if you have two namespaces that contain a type of the same name, and you want to use types from both namespaces; in this case, it may be too confusing to βuseβ the two namespaces. In addition, βuseβ drives extension methods; if there are extension methods that you donβt want to communicate with, do not include the namespace that contains them.
if "Text" is nested inside the "System", why only "using System" includes all namespaces?
I do not understand the question as it is formulated. I think maybe you are asking:
Why using System; Doesn't Simple Text Name Allow Nested Namespace?
This is why this does not work:
namespace Foo { namespace Bar { class Blah {} } }
In another file:
using Foo; class Abc : Bar.Blah {}
using Foo; only includes types declared directly inside Foo. It does not contribute namespaces declared directly inside Foo. C # designers thought it was too difficult to put namespaces in scope; usually people use using directives to cast types to scope.