Aracılığıyla paylaş


C'de nesne odaklı tekniklere genel bakış#

C# dilinde bir türün (sınıf, yapı veya kayıt) tanımı, türün neler yapabileceğini belirten bir şema gibidir. Nesne temelde şemaya göre ayrılan ve yapılandırılan bir bellek bloğudur. Bu makalede, bu şemalara ve bunların özelliklerine genel bir bakış sağlanır. Bu serinin sonraki makalesinde nesneler tanıtabilirsiniz.

Kapsülleme

Kapsülleme bazen nesne odaklı programlamanın ilk yapı taşı veya ilkesi olarak adlandırılır. Bir sınıf veya yapı, üyelerinden her birinin sınıfın veya yapının dışında kod oluşturmanın ne kadar erişilebilir olduğunu belirtebilir. Sınıf veya derleme dışındaki tüketicilere yönelik olmayan üyeler, kodlama hataları veya kötü amaçlı açıklardan yararlanma olasılığını sınırlamak için gizlenir. Daha fazla bilgi için bkz. Nesne odaklı programlama öğreticisi .

Üyeler

Bir türün üyeleri tüm yöntemleri, alanları, sabitleri, özellikleri ve olayları içerir. C# dilinde, diğer bazı dillerde olduğu gibi genel değişkenler veya yöntemler yoktur. Bir programın giriş noktası olan Main yöntemi bile bir sınıf veya yapı içinde bildirilmelidir ( üst düzey deyimleri kullandığınızda örtük olarak).

Aşağıdaki liste, bir sınıfta, yapıda veya kayıtta bildirilebilen tüm çeşitli üye türlerini içerir.

  • Alanları
  • Sabitler
  • Özellikler
  • Yöntemler
  • Kurucular
  • Etkinlikler
  • Sonlandırıcılar
  • Dizinleyiciler
  • Operatörler
  • İç İçe Türler

Daha fazla bilgi için bkz. Üyeler.

Erişilebilirlik

Bazı yöntemlerin ve özelliklerin çağrılması veya istemci kodu olarak bilinen bir sınıf veya yapı dışındaki koddan erişilmesi amaçlanır. Diğer yöntemler ve özellikler yalnızca sınıf ya da yapının kendisinde kullanılmak üzere olabilir. Yalnızca hedeflenen istemci kodunun ulaşabilmesi için kodunuzun erişilebilirliğini sınırlamak önemlidir. Aşağıdaki erişim değiştiricileri kullanarak türlerinizin ve üyelerinizin istemci koduna ne kadar erişilebilir olduğunu belirtirsiniz:

Varsayılan erişilebilirlik değeridir private.

Miras

Sınıflar (ancak yapılar değil) kalıtım kavramını destekler. Temel sınıf olarak adlandırılan başka bir sınıftan türetilen bir sınıf, oluşturucuları ve sonlandırıcıları dışında temel sınıfın tüm genel, korumalı ve iç üyelerini otomatik olarak içerir.

Sınıflar soyut olarak bildirilebilir; başka bir deyişle bir veya daha fazla yöntemin uygulaması yoktur. Soyut sınıflar doğrudan örneklenemez, ancak eksik uygulamayı sağlayan diğer sınıflar için temel sınıflar olarak görev yapabilir. Sınıflar, diğer sınıfların onlardan devralmalarını önlemek için korumalı olarak da bildirilebilir.

Daha fazla bilgi için bkz . Devralma ve Çok biçimlilik.

Arayüzler

Sınıflar, yapılar ve kayıtlar birden çok arabirim uygulayabilir. Bir arabirimden uygulamak, türün arabirimde tanımlanan tüm yöntemleri uyguladığı anlamına gelir. Daha fazla bilgi için bakınız Arabirimler.

Genel Türler

Sınıflar, yapılar ve kayıtlar bir veya daha fazla tür parametresiyle tanımlanabilir. İstemci kodu, bir tür örneği oluşturduğunda tipi belirler. Örneğin, List<T> ad alanı sınıfı System.Collections.Generic bir tür parametresiyle tanımlanır. İstemci kodu, listenin tuttuğu türü belirtmek için bir List<string> veya List<int> örneği oluşturur. Daha fazla bilgi için bkz. Genel Bilgiler.

Statik Türler

Sınıflar (yapılar veya kayıtlar değil) olarak staticbildirilebilir. Statik sınıf yalnızca statik üyeler içerebilir ve anahtar sözcüğüyle new örneği oluşturulamaz. Program yüklendiğinde sınıfın bir kopyası belleğe yüklenir ve sınıfın üyelerine sınıf adı üzerinden erişilir. Sınıflar, yapılar ve kayıtlar statik üyeler içerebilir. Daha fazla bilgi için bkz. Statik sınıflar ve statik sınıf üyeleri.

İç İçe Türler

Bir sınıf, yapı veya kayıt başka bir sınıf, yapı veya kayıt içinde iç içe yerleştirilebilir. Daha fazla bilgi için bkz. İç İçe Türler.

Kısmi Türler

Bir kod dosyasında sınıf, yapı veya yöntemin bir bölümünü, başka bir bölümünü de ayrı bir kod dosyasında tanımlayabilirsiniz. Daha fazla bilgi için bkz . Kısmi Sınıflar ve Yöntemler.

Nesne Başlatıcıları

Özelliklerine değer atayarak sınıf veya yapı nesnelerinin ve nesne koleksiyonlarının örneğini oluşturabilir ve başlatabilirsiniz. Daha fazla bilgi için bkz. Nesne başlatıcı kullanarak nesneleri başlatma.

Anonim Türler

Uygun olmayan veya adlandırılmış bir sınıf oluşturmanın gerekli olmadığı durumlarda anonim türler kullanırsınız. Adlandırılmış veri üyeleri anonim türleri tanımlar. Daha fazla bilgi için bkz. Anonim türler.

Uzantı Üyeleri

Ayrı bir tür oluşturarak türetilmiş bir sınıf oluşturmadan bir sınıfı "genişletebilirsiniz". Bu tür, özgün türe aitmiş gibi çağrılabilecek yöntemler içerir. Daha fazla bilgi için bkz . Uzantı yöntemleri.

Örtülü Olarak Yazılan Yerel Değişkenler

Bir sınıf veya yapı yönteminde, derleyiciye derleme zamanında bir değişkenin türünü belirlemesini bildirmek için örtük yazma kullanabilirsiniz. Daha fazla bilgi için bkz. var (C# başvurusu).

Kayıtlar

Değiştiriciyi record bir sınıfa veya yapıya ekleyebilirsiniz. Kayıtlar, değer tabanlı eşitlik için yerleşik davranışa sahip türlerdir. Kayıt ( record class veya record struct) aşağıdaki özellikleri sağlar:

  • Sabit özelliklere sahip bir başvuru türü oluşturmak için kısa söz dizimi.
  • Değer eşitliği. Bir kayıt türünün iki değişkeni aynı türe sahipse eşittir ve her alan için her iki kayıttaki değerler eşitse. Sınıflar başvuru eşitliğini kullanır: Bir sınıf türünün iki değişkeni, aynı nesneye başvururlarsa eşittir.
  • Yok edici olmayan mutasyon için kısa söz dizimi. İfade with , mevcut bir örneğin kopyası olan ancak belirtilen özellik değerleri değiştirilmiş yeni bir kayıt örneği oluşturmanıza olanak tanır.
  • Görüntüleme için yerleşik biçimlendirme. yöntemi, ToString kayıt türü adını ve ortak özelliklerin adlarını ve değerlerini yazdırır.
  • Kayıt sınıflarında devralma hiyerarşileri desteği. Kayıt sınıfları devralmayı destekler. Kayıt yapıları devralmayı desteklemez.

Daha fazla bilgi için bkz . Kayıtlar.

C# Dil Belirtimi

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# söz dizimi ve kullanımı için kesin kaynaktır.