Sınıflar, C# tiplerinden en temelidir. Bir sınıf, alanları (fields) ve aksiyonları (metod ve diğer fonksiyon üyelerini) basit bir birim içerisinde birleştiren veri yapılarıdır. Sınıflar, dinamik olarak oluşturulmuş örnekler için tanımlama sağlarlar. Ki bunlardan nesneler olarak bilinir. Sınıflar kalıtımı (inheritance) ve polymorphism’i destekleyen yapılardır.
Yeni sınıflar, kullanılan sınıf bildirimlerinden yaratılırlar. Bir sınıf tanımlaması, öncelikle sınıfın niteliği (modifiers), sınıfın ismi, ana sınıf (eğer varsa) ve sınıfa uygulananan arayüzlerler (interface) sıralaması ile olur. Bu tanımlamalardan sonra { ve } işaretleri ile sınıf tanımlaması tamamlanır.
Aşağıda Nokta adında basit bir sınıf tanımlaması yapılmıştır:
public class Nokta { public int x, y; public Nokta(int x, int y) { this.x = x; this.y = y; } }
New operatörü ile oluşturulmuş örnek sınıf ki yeni örnek için bellek ayrılmış, örneğe ilk kullanım için yapıcı (constructor) çağrımı yapılır ve geriye bu örneğe bir referans döndürür.
Aşağıda iki Nokta nesnesi oluşturulmuş ve bu iki nesneye refefans iki değişken içinde saklanır:
Nokta n1 = new Nokta(0, 0); Nokta n2 = new Nokta(10, 20);
Memory bir nesnenin kullanımı ortadan kalktığında o nesnenin kullandığı alanı geri çağırır. Bir nesnenin C#’ta açıkça serbest bırakılması hem gereksiz hem de imkansızdır.