1.
c# içinde şu an itibari ile 6 tane erişim belirteci vardır.
neden bunlara ihtiyacımız var?
eğer projeniz küçükse veya sadece siz kodluyorsanız, her şeyi public yapabilirsiniz. ama ama ama eğer ki siz bir şirkette çalışıyorsanız ve bu şirkette ki 100 kişi ile proje geliştiriyorsanız ve bunların hepsi sadece public kullanıyorsa o zaman şuna sebep olacaktır.
1. (x random tuş), x tuşuna bastığınız anda içinden çıkılmaz bir öneri alacaksınız.
2. %100 eminim ki birisi yanlışlıkla değiştirilmemesi gereken değerleri değiştirecektir.
3. yarın bir değeri değiştirdiğinizde tek tek elle bütün isimleri değiştirmeniz gerekecek. (çözümü encapsulation ama access modifiers öğrenmeden bunu uygulamakta zorlanırsınız.) encapsulation konusunu başka bir zaman anlatacağım, çok önemli bir konudur.
4. şirket batacak ve aç kalacaksınız. :)
bunlar;
örneğin class içinde int kafasozluk = 100; diye bir şey tanımlı olsun.
not: aşağıda ki yazı classın içindeki değişken üzerinden anlatılmıştır. dilerseniz başka objelere uyarlayabilirsiniz.
public int kafasozluk: her yerden erişilebilir.
private int kafasozluk: sadece o class içerisinden erişebilir.
protected int kafasozluk: aynı class içerisinde veya bu classın türemesi sonucunda erişilebilir.
internal int kafasozluk: sadece şu an kullandığınız proje dosyalarından erişebilir.
protected internal int kafasozluk: şu an kullandığınız proje veya başka bir projede içinde bulunduğu classın türetilmesi sayesinde erişilebilir.
private protected int kafasozluk: tür veya üyeye yalnızca bildiren proje içinde, aynı class veya ondan türetilen bir nesne ile erişilebilir.
her yerde söylenmeyen ek notlar:
1. namespace içinde direkt olarak tanımlanan class, struct, interface internal veya public dışında erişim belirteci alamaz. ama nested class her türlü erişim belirteci alabilir.
2. class, struct, interface default erişim belirteci internaldir. class ve struct içinde ki şeyler default olarak privatedir. interface istisna olarak publictir.
3. class ve structun içinde tanımlanmış interfaceler default olarak private olur.
4. nested classlar privatedir. kanıtı resimde, tersine mühendislik ile derleyici kodu nasıl çeviriyor, görebiliyoruz.
aha kanıtlarıyla:
bu benim yazdığım saçma sapan kodlar. isimlendirmelere takılmayın. kendim özel olarak test ettiğim için dikkat etmedim. :)
bu derleyici kodu çevirdikten sonra tersine mühendislik ile okuduğumuz kodlar:
türkçe karşılığı olmayan şeyleri türkçe olarak anlatmak ne zor yahu.. tdk lütfen bize kullanabileceğimiz oturgaçlı götürgeç gibi isimlendirmeler verin. hoş gerçi türkçeyi ben de çok düzgün kullanmıyorum. düzgün bir türkçe karşılık bulabilirsem bu yazıyı editleyeceğim.
neden bunlara ihtiyacımız var?
eğer projeniz küçükse veya sadece siz kodluyorsanız, her şeyi public yapabilirsiniz. ama ama ama eğer ki siz bir şirkette çalışıyorsanız ve bu şirkette ki 100 kişi ile proje geliştiriyorsanız ve bunların hepsi sadece public kullanıyorsa o zaman şuna sebep olacaktır.
1. (x random tuş), x tuşuna bastığınız anda içinden çıkılmaz bir öneri alacaksınız.
2. %100 eminim ki birisi yanlışlıkla değiştirilmemesi gereken değerleri değiştirecektir.
3. yarın bir değeri değiştirdiğinizde tek tek elle bütün isimleri değiştirmeniz gerekecek. (çözümü encapsulation ama access modifiers öğrenmeden bunu uygulamakta zorlanırsınız.) encapsulation konusunu başka bir zaman anlatacağım, çok önemli bir konudur.
4. şirket batacak ve aç kalacaksınız. :)
bunlar;
örneğin class içinde int kafasozluk = 100; diye bir şey tanımlı olsun.
not: aşağıda ki yazı classın içindeki değişken üzerinden anlatılmıştır. dilerseniz başka objelere uyarlayabilirsiniz.
public int kafasozluk: her yerden erişilebilir.
private int kafasozluk: sadece o class içerisinden erişebilir.
protected int kafasozluk: aynı class içerisinde veya bu classın türemesi sonucunda erişilebilir.
internal int kafasozluk: sadece şu an kullandığınız proje dosyalarından erişebilir.
protected internal int kafasozluk: şu an kullandığınız proje veya başka bir projede içinde bulunduğu classın türetilmesi sayesinde erişilebilir.
private protected int kafasozluk: tür veya üyeye yalnızca bildiren proje içinde, aynı class veya ondan türetilen bir nesne ile erişilebilir.
her yerde söylenmeyen ek notlar:
1. namespace içinde direkt olarak tanımlanan class, struct, interface internal veya public dışında erişim belirteci alamaz. ama nested class her türlü erişim belirteci alabilir.
2. class, struct, interface default erişim belirteci internaldir. class ve struct içinde ki şeyler default olarak privatedir. interface istisna olarak publictir.
3. class ve structun içinde tanımlanmış interfaceler default olarak private olur.
4. nested classlar privatedir. kanıtı resimde, tersine mühendislik ile derleyici kodu nasıl çeviriyor, görebiliyoruz.
aha kanıtlarıyla:
bu benim yazdığım saçma sapan kodlar. isimlendirmelere takılmayın. kendim özel olarak test ettiğim için dikkat etmedim. :)
bu derleyici kodu çevirdikten sonra tersine mühendislik ile okuduğumuz kodlar:
türkçe karşılığı olmayan şeyleri türkçe olarak anlatmak ne zor yahu.. tdk lütfen bize kullanabileceğimiz oturgaçlı götürgeç gibi isimlendirmeler verin. hoş gerçi türkçeyi ben de çok düzgün kullanmıyorum. düzgün bir türkçe karşılık bulabilirsem bu yazıyı editleyeceğim.
devamını gör...