Nedir Bu Const ?

Nedir Bu Const ?

Nedir Bu Const ?

  5 dakika Okuma Süresi
Merhabalar, özellikle C# programlama diliyle ilgilenenler const kelimesini duymuştur. Peki nedir bu const ? Hadi gelin beraber açıklayalım.

Öncelikle kelimenin kendisinden bahsedelim; const, açılımı constant olan, Türkçe'ye sabit olarak çevirebileceğimiz bir kelimedir ve programlamada da yoğun bi şekilde kullanılmaktadır.
Örneğin Math sınıfı içerisinde bulunan ve bildiğimiz Pi sayısını tutan Math.Pi değeri double tipte bi const değişkendir. Pi sayısı hiçbir zaman değişmeyen ve değeri sabit olan bir şey olduğu için const ile bildirilmiştir.
Bizde tıpkı Pi sayısı gibi hiçbir zaman değiştirilmeyecek değişken yada ifadeler kullanmak istediğimizde ilgili değişkeni const ile bildirebiliriz.
const ile bildirilmiş değişkenlerin derleme yada çalışma zamanında değerleri değiştirilemez. Başlangıçta ne belirtildiyse o kullanılmak zorundadır.
Ben const bi integer değişken oluşturayım x fonksiyonunda değerini 5 yapayım diye plan yapıyorsanız yapmayın çünkü const değişken oluşturduğunuz anda değerini bildirmeniz gerekiyor.
Örneğin;
const x = 5;
gibi.
Ayrıca const değişkenleri static tipte oluşturamazsınız yani
static const int x = 5;
gibi bi tanımlama mümkün değil.

Değerleri ilk anda belli olduğu için bellekte daha az yer kaplarlar, bellek kullanımı daha iyidir.
Buraya kadar genel özelliklerinden bahsettik, gelin şimdi sırasıyla oluşturma kurallarına bakalım;

1. class seviyesinde tanımlanabilir, yani herhangi bir fonksiyon içerisinde const değişken oluşturamazsınız.
class SampleClass
{
    const string isim = "Suforce";
    string IsimGetir() => isim;
}
gibi.
2. const ifadenin değerini sadece başka bir const değiştirebilir. E hani değiştirilmiyordu ? Sanırım şöyle bir örnek vermek yerinde olur;

const int x = 5;
const int y = x + 10;
const int z = y + x + 2;
Gördüğünüz üzere x, y ve z değişkenlerinin üçü de const tipte ama y'nin, x'e ve z'nin ise hem x hemde y'ye bağlı olarak değeri değişiyor.
Birbirine bağımlı olan birden fazla const değişken ile yine bir const değişkene değer atanabiliyor, az önce bahsettiğim değişimden kasıt budur.
3. bir metodu const değişkene atama yapamazsınız. Örneğin;

int Hesapla(int x, int y) => x + y;
const hesap = Hesapla();
Hesapla fonksiyonuna bakarsak, parametre olarak aldığı x ve y integer değerleri toplayıp geri döndürüyor ve hesap adındaki const bi integer'a bu fonksiyondan dönen değer atanmış. Ama ne yazık ki bu kod hata verir :(
Çünkü Hesapla fonksiyonundan gelecek olan değer değişkendir, bazen 3 gelir, bazen 5. Ama bu const yapısına aykırı ! Ne demiştik, const değişkenin değeri sabittir ve değiştirilemez.
4. Yine const değeri değiştirilemez kuralından sebep DateTime fonksiyon ve propertileri const değişkene atanamaz. Örneğin
const DateTime simdi = DateTime.Now;
gibi bir tanımlama hata verecektir.
Peki ya neden ? Çok basit ! Zaman durmuyor sürekli değişiyor, bu yazıyı yazarken bile onlarca saniye geçti. E ama const ifadeler değiştirilemezdi dimi ?
5. Son olarak uygulamanın çalışma dizini olan Application.StartupPath değeri de const olarak atanamaz. Çünkü ben uygulamayı D diskine kurarım, sen C içindeki Program Files klasörüne kurarsın, yine değişir bu yol. Ve böyle bir tanımlama const'un yapısına aykırı olur, o yüzden derleyici buna da izin vermez.

Bu kadar açıklamadan sonra son olarak bi örnek kod yazalım. Bu örnekte kullanıcıdan alınan yarı çap bilgisine göre dairenin alan ve çevresini hesaplayalım. Hesaplama sonrasında da kullanıcıya bildirelim.

class Program
{
    const double pi = 3.141;
    void Main()
    {
        Console.Write("Yarı Çap Giriniz: ");
        double yaricap = Convert.ToInt32(Console.ReadLine());
        double cevre = 2 * pi * yaricap;
        double alan = pi * yaricap * yaricap;
        Console.WriteLine("Dairenin Çevresi: {0}\nDairenin Alanı: {1}", cevre, alan);
    }
}
const kavramı ile ilgili olan bu yazımızın sonuna geldik, inşallah faydalı ve açıklayıcı bi yazı olmuştur.
Başka bir yazıda görüşmek üzere, herkese hayırlı günler.


  • İçeriği Paylaş:

İÇERİĞİ DEĞERLENDİR

Toplam Değerlendirme Sayısı: 0
Toplam Değerlendirme: 0 / 5

Cevap Yaz