Malumunuz olduğu üzere .NET sınıfları Namespace olarak paketlenmektedir. Namespace’ler ise DLL dosyaları olarak gelmektedir. Yararlanmak istenen hangi DLL dosyasında veya referansta yer alıyorsa bu referansın Visual Studio’nun Solution Explorer penceresinde listelenmesi, konsolda derleme yapılıyorsa söz konusu DLL dosyasından yararlanılmak istendiği “/reference” parametresi ile işaret edilmesi gerekir. Tabi bunu 2 istisnası vardır; System.dll ve System.Core.dll dosyaları Visual Studion’nun Solution Explorer penceresinde listelenmese bile bu referanstaki Namespace’lerden dolayısıyla sınıf ve yapılardan yararlanılabilir. Bu nedenle aşağıda konsolda yapılan her 3 derleme işlev bakımından birbirinden farklı değildir.

Tekrar etmek gerekirse System.dll dosyasında çok sayıda Namespace bulunmaktadır. Örneğin IO bunlardan birisidir. Bu demektir ki C# uygulamaları dahilinde IO adlı namespace’teki sınıflardan yararlanmak için herhangi bir hazırlık yapmaya gerek yoktur. Örnek üzerinde konuşmak gerekirse aşağıdaki gibi bir kod yazılıp istenen Text dosyasının içeriği okunup RichTextBox’ta görüntülenebilir.
private void dosya_sec_Click(object sender, EventArgs e)
{
System.IO.FileStream akis;
openFileDialog1.ShowDialog();
string yol = openFileDialog1.FileName;
akis = new System.IO.FileStream(yol, System.IO.FileMode.Open,
System.IO.FileAccess.Read);
System.IO.StreamReader okuyucu;
okuyucu = new System.IO.StreamReader(akis);
richTextBox1.Text = okuyucu.ReadToEnd();
okuyucu.Close();
akis.Close();
}
Bu kodda yararlandığım FileStream ve StreamReader sınıflarıyla FileAccess ve FileMode numaralayıcıları(enum) IO adlı namespace’te, IO adlı Namespace ise System adlı namespace’in içinde yer aldığı için Class ve enum adlarından önce Namespace adını yazdım.
Kod dosyasının başına using System.IO; yazılırsa IO’daki sınıf, yapı ve enum’ları kullanmak için her seferinde sınıf adından önce namespace adını yazma zorunluluğu kalkar. Yani Stream sınıflarından yararlanmak için yazarımızın dediği gibi using System.IO; yazmak şart değildir ve System.IO bir kütüphane değil bir namespace’tir. Tabi System.IO demekle en son yazılan namespace’in işaret edildiğini ayrıca belirtmeye gerek yoktur.
Ayrıca kod dosyasının başına using System.IO; yazılsa bile uygulamaya dahil edilen bir şey yoktur ve System.dll dosyası yerinde yani GAC’de olduğu gibi durmaktadır. Türkiye’de Namespace ile kütüphaneyi(kütüphane genellikle DLL dosyası karşılığı kullanılmaktadır) birbirine karıştırmak veya bu konuda yanlış bilgiye sahip olmak “ileri düzey” C#, .NET uyumlu Visual Basic ve ASP.NET kitabı yazmaya engel değildir. Çünkü Türkiye'de teknik yanlışı bol şişirme kitaplara bir miktar talep var.