Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Tüm türlerin ve tür üyelerinin erişilebilirlik düzeyi vardır. Erişilebilirlik düzeyi, derlemenizdeki veya diğer derlemelerdeki diğer kodların bunları kullanıp kullanamayacağını denetler. Bir bütünleştirme, tek bir derleme yoluyla bir veya daha fazla .cs dosyası derlenerek oluşturulan bir .dll veya .exe'dir. Bir türü veya üyeyi bildirirken erişilebilirliğini belirtmek için aşağıdaki erişim değiştiricilerini kullanın:
- public: Herhangi bir derlemedeki kod bu türe veya üyeye erişebilir. İçeren türün erişilebilirlik düzeyi, türün genel üyelerinin erişilebilirlik düzeyini denetler.
-
private: Yalnızca aynı
classiçinde bildirilen kod veyastructbu üyeye erişebilir. -
protected: Yalnızca aynı
classiçinde veya ondan türetilmişclassiçindeki kodlar bu tür veya üyeye erişebilir. - internal: Yalnızca aynı derlemedeki kod bu türe veya üyeye erişebilir.
- korumalı iç: Yalnızca aynı derlemedeki veya başka bir derlemedeki türemiş bir sınıfta bulunan kod bu tür veya üyelere erişebilir.
- private protected: Yalnızca aynı derlemedeki ve aynı sınıftaki veya türetilmiş bir sınıftaki kod türüne veya üyesine erişebilir.
En üst düzey (iç içe olmayan) türler için dosya değiştiriciyi kullanın. Değiştirici, file aynı kaynak dosyadaki koda erişimi kısıtlar. Değiştiriciyi file herhangi bir erişim değiştirici ile birleştiremezsiniz.
Bir record türdeki değiştirici, derleyicinin ek üyeleri sentezlesine neden olur. Değiştirici, record veya record classrecord structiçin varsayılan erişilebilirliği etkilemez.
Özet tablosu
| Arayanın konumu | public |
protected internal |
protected |
internal |
private protected |
private |
|---|---|---|---|---|---|---|
| sınıf içinde | ✔️️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Türetilmiş sınıf (aynı derleme) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
| Türetilmemiş sınıf (aynı derleme) | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
| Türetilmiş sınıf (farklı derleme) | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ |
| Türetilmemiş sınıf (farklı derleme) | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
Aşağıdaki örneklerde, bir tür ve üye üzerinde erişim değiştiricilerinin nasıl belirtildiği gösterilmektedir:
public class Bicycle
{
public void Pedal() { }
}
Tüm erişim değiştiricileri tüm bağlamlardaki tüm türler veya üyeler için geçerli değildir. Bazı durumlarda, içeren türün erişilebilirliği üyelerinin erişilebilirliğini kısıtlar.
Kısmi sınıf veya kısmi üyenin birden çok bildirimi aynı erişilebilirliği içermelidir. Bir bildirimde erişim değiştiricisi yoksa, diğer bildirimler erişim değiştiricisi bildiremez. Kısmi sınıf veya yöntem için birden çok bildirim farklı erişim açıklarsa derleyici bir hata oluşturur.
Sınıf ve yapı erişilebilirliği
Doğrudan bir ad alanı içinde bildirilen sınıflar ve yapılar (diğer sınıfların veya yapıların içinde iç içe değildir) public veya internal erişimine sahip olabilir. Bir erişim değiştirici belirtmezseniz, varsayılan değer olur internal. Geçerli kaynak dosyaya file erişimi kısıtlamak için değiştiriciyi de kullanabilirsiniz.
İç içe sınıflar ve yapılar da dahil olmak üzere yapı üyelerini , publicveya internalolarak privatebildirebilirsiniz. İç içe sınıflar ve yapılar da dahil olmak üzere sınıf üyelerini , public, , protected internalprotected, , internalveya private protectedolarak privatebildirebilirsiniz. Varsayılan olarak, iç içe geçmiş sınıflar ve yapılar da dahil olmak üzere sınıf ve yapı üyelerinin erişimi vardır private .
Türetilmiş sınıflar, temel türlerinden daha fazla erişilebilirlik ifade edemez. Bir ortak sınıf B, bir iç sınıf A'dan türetilerek bildirilemez. İzin verilirse, türetilmiş sınıftan A içindeki tüm protected veya internal üyelerine erişilebilir olduğu için A genel hale gelecektir.
Siz, belirli diğer derlemelerin iç türlerinize erişmesini sağlamak için InternalsVisibleToAttribute kullanabilirsiniz. Daha fazla bilgi için Arkadaş derlemeleri bölümüne bakın.
Diğer türler
Arabirimleri bir ad alanı içinde doğrudan public veya internal olarak bildirebilirsiniz. Sınıflar ve yapılar gibi arabirimler de varsayılan olarak erişim sağlar internal . Arabirimin amacı, diğer türlerin bir sınıfa veya yapıya erişmesini sağlamak olduğundan, arabirim üyeleri public varsayılan olarak kullanılır. Arabirim üyesi bildirimleri herhangi bir erişim değiştirici içerebilir. Bir arabirimin tüm uygulayıcıları tarafından gereken ortak bir uygulama sağlamak için üyeler üzerinde interface erişim değiştiricileri kullanın.
Doğrudan bir ad alanında bildirilen bir türün varsayılan olarak internal erişim düzeyi vardır.
Erişim değiştiricileri hakkında daha fazla bilgi için Erişilebilirlik Düzeyleri sayfasına bakın.
Üye erişilebilirliği
class veya struct'un üyelerini (iç içe sınıflar ve yapılar dahil) herhangi altı erişim türünden biriyle bildirebilirsiniz. Yapı üyelerini protected, protected internal veya private protected olarak bildirmeniz mümkün değildir çünkü yapılar devralmayı desteklemez.
Normalde, bir üyenin erişilebilirliği, onu içeren türün erişilebilirliğinden büyük değildir. Ancak, üye bir arabirim yöntemini uygular veya kamuya açık bir temel sınıfta tanımlanan sanal bir metodu geçersiz kılarsa, bir public sınıfının internal üyesine derleme dışından erişebilirsiniz.
Herhangi bir üye alanının, özelliğinin veya olayının türü en az üyenin kendisi kadar erişilebilir olmalıdır. Benzer şekilde, herhangi bir yöntemin, dizin oluşturucunun veya temsilcinin dönüş türü ve parametre türleri en az üyenin kendisi kadar erişilebilir olmalıdır. Örneğin, Cpublic aynı zamanda olmadıkça bir sınıf C döndüren bir publicM yönteminiz olamaz. Bu nedenle, Aprivate olarak bildirilmişse, protected türünde bir A özelliğiniz olamaz.
Kullanıcı tanımlı işleçleri her zaman olarak publicbildirmeniz gerekir. Daha fazla bilgi için bkz . İşleç aşırı yüklemesi.
Bir class veya struct üyesinin erişim düzeyini ayarlamak için, aşağıdaki örnekte gösterildiği gibi üye bildirimine uygun anahtar sözcüğü ekleyin.
// public class:
public class Tricycle
{
// protected method:
protected void Pedal() { }
// private field:
private int _wheels = 3;
// protected internal property:
protected internal int Wheels => _wheels;
}
Sonlandırıcıların erişilebilirlik değiştiricileri olamaz. Bir enum türün üyeleri her zaman publicşeklindedir ve erişim değiştiricileri uygulayamazsınız.
C# dili 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.