Tasarım Kodlama

C# const Kullanımı

Bu yazıya gelene kadar değişkenlerle bayağı uğraşmışsınızdır. Bu yazıda const nedir ve nasıl kullanılır sorusuna cevap bulacaksınız.

C#’da const anahtar sözcüğüyle tanıtılan bir sabittir. Bir sabit bildirirken, ona hemen bir değer atamanız gerekir ve bundan sonra bu sabitin değerinde HİÇBİR DEĞİŞİKLİK YAPILAMAZ. Bu, hiç değişmeyen bir değeriniz olduğunda ve kodunuz tarafından, hatta kazara bile değiştirilmediğinden emin olmak istediğinizde harikadır.

Frameworkün kendisinde birçok sabit bulacaksınız, örneğin PI için bir sabitin tanımlandığı Math sınıfında:

Ama elbette, ilginç olan kısım, kendimize ait bazı sabitleri beyan etmektir. Bir yöntemin kapsamında bir sabit şu şekilde tanımlanabilir:

Bununla birlikte, çoğu sabit sınıf düzeyinde bildirilir, böylece görünürlüğe bağlı olarak sınıfın tüm yöntemlerinden ve hatta sınıfın dışından erişilebilirler (ancak elbette değiştirilemezler). Bir sabit, sınıfın statik bir üyesi gibi davranır, yani sınıfı somutlaştırmadan ona erişebilirsiniz. Bunu akılda tutarak, iki sabitin tanımlandığı tam bir örnek deneyelim.

Bir sınıfı (Ornek) iki sabitle nasıl tanımladığıma dikkat edin. Birincisi özeldir(private), bu nedenle yalnızca kendi sınıfından erişilebilir, diğeri ise geneldir(public). Bu nedenle, ana program kodumuzda, her iki sabite de farklı şekilde erişiyorum – ilk olarak, sahte yanıt herkese açık olduğundan doğrudan ve ikinci olarak SabitGetir() metodunun yardımıyla alınır.

Hangi türler sabit olarak kullanılabilir?

Sabitlerin hemen bildirilmesi gerektiğinden ve daha sonra değiştirilemeyeceğinden, bir sabite atadığınız değerin sabit bir ifade olması ve derleyicinin değeri derleme zamanında zaten değerlendirebilmesi gerekir. Bu, int, bool değerlerinin ve string bir sabit için gayet iyi olabilir. Örneğin bir DateTime nesnesinin sabit olarak kullanılamayacağı anlamına gelir.

Derleyicinin değeri hemen bilmesi gerektiğinden, değeri ayarlarken yapabileceğiniz bazı sınırlamalar da vardır. Örneğin, bunlar YAPABİLECEKLERİNİZİN mükemmel örnekleridir:

Öte yandan, bunlar sabit ifadeler olmadığından bir yöntem çağrısının veya sabit olmayan bir sınıf üyesinin sonucunu kullanamazsınız. İşte YAPAMAYACAĞINIZ şeylere dair birkaç örnek:

Aradaki fark, derleyicinin kodunuza ulaştığında, örneğin, değeri elde etmek için yürütmesi gerekenin aksine, sayılar, dizeler ve diğer sabitler gibi bilmesinin beklenebileceği şeydir.

Sabite bir alternatif: readonly kullanma

Bir sınıf sabitinin biraz daha az kısıtlayıcı bir versiyonunu arıyorsanız, salt okunur anahtar kelimeye bakmak isteyebilirsiniz. Yöntem düzeyinde mevcut değildir, ancak yalnızca sınıfın oluşturucu yönteminin bildirilmesi veya yürütülmesi sırasında değiştirilebilen bir alanı tanımlamak için sınıf düzeyinde kullanılabilir. Bu nedenle, nesne kullanıma hazır olur olmaz, salt okunur alan sonsuza kadar aynı değere sahip olacak ve kullanıcı tarafından değiştirilemeyecek.

Deneyelim:

Yani, iki salt okunur alanımız var: Birincisi özel, ikincisi genel (genellikle bunun için özelliklerimiz var, ama burada benimle birlikte). Birincisi bir değer olmadan bildirilir (bunu sabitlerden farklı olarak salt okunur alanlarla yapabiliriz), diğeri ise hemen başlatılır. Ayrıca veri türü olarak DateTime sınıfını kullandığımızı ve buna sabit olmayan bir değer atadığımızı fark edeceksiniz. Başka bir deyişle, sabitlerle yapamayacağımız pek çok şey yapıyoruz, bu da salt okunur alanları sabitlere güzel bir alternatif haline getiriyor.

OrnekSinif sınıfının yapıcısındaki suan alanına nasıl bir değer atadığıma dikkat edin. Daha önce de belirtildiği gibi, bu salt okunur bir alana değer atamak için son şanstır. Bundan sonra, tanımlayıcı sınıfın içinde veya dışında bir metotta olsanız da, salt okunur bir alana bir değer atamaya çalışırsanız derleme hatası alırsınız.

Özet

Bir sabit, bir yöntemin kapsamı içinde veya sınıf düzeyinde tanımlanabilir. Derleme zamanında zaten bilinen ve daha sonra değiştirilemeyecek bir değer tanımlamanıza izin verir. Sabitler için kullanılan tipik türler tamsayılar, kayan değerler, dizeler ve boolelardır. Daha fazla esneklik arıyorsanız, yukarıda açıklandığı gibi salt okunur alanını deneyin.

Yorum yap