Q:

Multiple Systems inside assemblies

When I look at assemblies in my references I can see multiple System namespaces:

So which one of them do I call when I have this code in my .cs file?
using System;   // <---------
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

How does this using algorithm finds appropriate namespace in these assemblies?

A:

Namespaces effectively merge across all referenced assemblies.  When you have using System;, you're importing types from the whole namespace, meaning that all types in that namespace in all referenced assemblies are made available.
A namespace doesn't even exist until there's a type in it.
If you wanted, you could define your own types in the System namespace, which makes them available whenever you have using System;.  That's not to say that you should, only that it's possible.

