C'de sınıflara, yapılara ve kayıtlara 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ılmış ve yapılandırılmış bir bellek bloğudur. Bu makalede, bu şemalara ve bunların özelliklerine genel bir bakış sağlanır. Bu serinin bir sonraki makalesinde nesneleri tanıtma.
Kapsülleme
Kapsülleme bazen nesne odaklı programlamanın ilk sütunu veya ilkesi olarak adlandırılır. Sınıf veya yapı, üyelerinden her birinin sınıf veya yapı dışında ne kadar erişilebilir olduğunu belirtebilir. Sınıfın veya derlemenin dışından kullanılması amaçlanmayan yöntemler ve değişkenler, kodlama hataları veya kötü amaçlı açıklardan yararlanma olasılığını sınırlamak için gizlenebilir. 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, başka 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ıf, yapı veya kayıtta bildirilebilen tüm çeşitli üye türlerini içerir.
- Alanlar
- Sabitler
- Özellikler
- Yöntemler
- Oluşturucular
- Olaylar
- Sonlandırıcılar
- Dizin Oluşturucular
- İşleçler
- İç içe Geçmiş 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ında veya yapısında kullanım için 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ştiricilerini kullanarak türlerinizin ve üyelerinizin istemci koduna ne kadar erişilebilir olduğunu belirtirsiniz:
Varsayılan erişilebilirlik şeklindedir private
.
Devralma
Sınıflar (ancak yapılar) devralma 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 ortak, 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ın örneği doğrudan oluşturulamasa da, 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 kendilerinden devralmalarını önlemek için korumalı olarak da bildirilebilir.
Daha fazla bilgi için bkz . Devralma ve Çok biçimlilik.
Arabirimler
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 bkz . Arabirimler.
Genel Türler
Sınıflar, yapılar ve kayıtlar bir veya daha fazla tür parametresiyle tanımlanabilir. İstemci kodu, türün bir örneğini oluşturduğunda türünü sağlar. Örneğin, List<T> ad alanında System.Collections.Generic sınıfı bir tür parametresiyle tanımlanır. İstemci kodu, listenin tutacağı türü belirtmek için bir List<string>
veya List<int>
örneğini oluşturur. Daha fazla bilgi için bkz. Genel Bilgiler.
Statik Türler
Sınıflar (ancak yapılar veya kayıtlar) olarak static
bildirilebilir. 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.
İç içe Geçmiş 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ın, yapının veya yöntemin bir kısmı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. Anonim türler, adlandırılmış veri üyeleri tarafından tanımlanır. Daha fazla bilgi için bkz . Anonim türler.
Uzantı Metotları
Ayrı bir tür oluşturarak türetilmiş bir sınıf oluşturmadan 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 değişkenin türünü belirlemesini bildirmek için örtük yazma özelliğini kullanabilirsiniz. Daha fazla bilgi için bkz. var (C# başvurusu).
Kayıtlar
C# 9, sınıf veya yapı yerine oluşturabileceğiniz bir başvuru türü olan türünü tanıtır record
. Kayıtlar, sabit türlerdeki verileri kapsüllemek için yerleşik davranışa sahip sınıflardır. C# 10 değer türünü tanıtır record struct
. 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şvuruda bulunurlarsa eşittir.
- Yıkıcı 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özdizimi ve kullanımı için kesin bir kaynaktır.