C# Değişkenler Kavramı Nedir? C# Değişkenler ve Bellek Yönetimi

0

Yazılım öğrenmek istiyorsanız mutlaka bilmeniz gereken en önemli 2 kavram C# veri tipleri ve değişkenlerdir. Bunları yazılımı meydana getiren temel kök hücreler gibi görebilirsiniz. Verilerin taşınmasında , kodların anlamlandırılmasında kısacası yazdığınız projenin her bir adımında değişkenler ve bunların veri tiplerinin önemi büyüktür. Bu yazımızda yazılıma sıfır başlayanlar için değişkenler kavramı üzerinde durucaz. Değişkenlerin tam olarak ne işe yaradığını ve tanımlama kurallarını anlatıcaz. Gerçek hayattan örneklerle adım adım değişkenler kavramını öğreneceksiniz. Yazıyı bitirdiğinde C#’ta veri yönetimi konusunda sağlam bir temel oluşturmuş olacaksın..

Bir program ne kadar karmaşık olursa olsun, tüm işlemler en temelinde veri saklama ve bu verileri işleme mantığı üzerine kuruludur. C# dilini öğrenirken veri tiplerini anlamak, ileride nesne yönelimli programlamaya, veri tabanı işlemlerine veya web geliştirmeye geçtiğinizde sizlere büyük kolaylıklar sağlayacaktır.

İlginizi Çekebilir : C# Öğrenmek İçin 5 Sebep ? C# Nedir ve Nerelerde Kullanılır? Neden C# Öğrenmeliyim ?

C# değişkenler kavramı ve değişken tanımlama
C# değişkenler kavramı ve değişken tanımlama

Değişken Nedir? Değişken Kavramı İle İlgili Bilinmesi Gerekenler

Bir program çalışırken sürekli veri üretir, bu verileri işler ve çeşitli amaçlarla saklar. İşte tam bu noktada değişken kavramı devreye girer. Değişken kavramını aslında bir çeşit kutuya da benzetebiliriz. Değişkenler aynı bir kutu gibi içerisine bir değer tanımladığımız ve hangi değere ihtiyacımız varsa ona ait kutuyu aldığımız bir yapı gibi düşünülebilir. Bu kutunun içerisine kimi zaman bir rakam kimi zaman ise bir metin koyduğunuzu düşünün. İşte gerçek hayattan farkı burada. Gerçek hayatta kutu içine bir metin ya da sayı koyamazsınız elle tutulan bir nesne koyabilirsiniz. Yazılımda ise elle tutulan nesneler değil de rakam , metin gibi verileri taşıyan kutulara değişken denir.

Değişken kullanılan bir kod genel olarak aşağıdaki ifade ile yazılır.

değişken tanımı
değişken tanımı

Değişkenin türü, atanan değerin ifade edeceği veri tipine göre değişiklik gösterir. Değişkenin ismi, projenizin farklı kısımlarında çağırmak için kullanacağınız bir referans ismidir ve değer ise, metin, sayı, tarih gibi farklı veri tiplerini ifade eder. Bu değere bağlı olarak değişkenin türü de değişir. Şimdi, en yaygın olarak kullanılan int ve string değişken türlerini tanımlayarak başlayabiliriz.

Aşağıdaki örneği inceleyelim. Burada ” yaş ” ve ” ad ” bizim değişkenlerimizdir. Bu iki değişkende farklı tipte veriler taşımaktadır. Yaş değişkeni C# veri tiplerinden int tipinde ( sayısal değer taşıyan değişkenler ) , ad ise string tipindedir ( metinsel değer taşıyan değişkenler ).

int yas = 25;
string ad = “Günay”;

Değişkenler bilgisayar hafızasında geçici bir şekilde yer kaplar. Program çalıştığı sürece bu değişkenlere ihtiyaç oldukça ulaşılır, değiştirilebilir veya farklı işlemlerde kullanılabilir.

C# değişkenler bellekte nasıl saklanır
C# değişkenler bellekte nasıl saklanır

Değişkenler Neden Kullanılır ?

Yukarıda anlatmaya çalıştığımız olguyu bu kez başka bir örnek üzerinden anlatalım. Böylece değişkenler neden kullanılır daha iyi anlayacaksınız.

İlginizi Çekebilir : Hello World Uygulaması | C# ile Console Uygulamalarına Giriş

Örneğin bir bilgisayar oyunu düşünün. Oyunda yaptığınız işlere göre çeşitli puanlar topladığınızı ya da bir karakteri yönlendiriyorsanız bu karakterin aldığı hasarlar karşısında bir can puanı tutulduğunu düşünün ve her darbe aldığında bu puanın azaldığını düşünün. İşte tüm bu değerler bir değişkenin içinde tutulur.

Eğer değişken olmasa:

❌ Oyuncunun canı her seferinde sıfırlanır
❌ Skor tutamazsın
❌ Kullanıcının adını bile hafızada saklayamazsın

C# değişkenler nedir
C# değişkenler nedir

Bu durumda da her yapacağınız işlem sıfırlanacağı için bundan bir zevk almazdınız. Kısacası oyunu oynamanın bir amacı olmazdı.

C#’ta Değişkenler Nasıl Adlandırılır ?

Değişkenlere isimler verirken rastgele isim vermekten kaçınmalıyız. Değişken isimlendirme bir takım kurallara sahiptir. Bu kurallar yazılımın düzgün çalışabilmesi , herhangi bir çakışmanın olmaması ve projeyi yazan kişinin dışında başkalarının da müdahale edebilmesi adına oldukça önemlidir. Aşağıda değişken isimlendirme sırasında dikkat edilmesi gerekenlere değinelim.

Öncelikle bir değişkeni yazmaya başlarken dikkat edilmesi gereken en basit kural, ismin bir harfle başlamasıdır. C#’ta değişken isimleri hiçbir zaman rakam ile başlayamaz. Örneğin “yas1” geçerli bir isim olabilirken “1yas” kesinlikle hata verir.

Değişken isimlendirme yaparken , eğer değişkenimiz iki isimden oluşacak ise kesinlikle iki kelime arasında boşluk kullanılamaz. Değişken isminde birden fazla kelime kullanılmak istenirse bunları bitişik yazmalı ve her yeni kelimenin ilk harfini büyük harfle başlatmalısınız. Buna camelCase adı verilir. Örneğin “kullaniciAdi” veya “toplamTutar” gibi isimler C# dünyasında en çok tercih edilen standarttır.

Değişken isimlendirme de Türkçe karakter meselesine gelince; teknik olarak “ö, ü, ğ, ç, ş” gibi harfler kullanılabilir ancak profesyonel projelerde genellikle bunlar tercih edilmez. Bunun nedeni, farklı platformlarda veya yabancı geliştiricilerin çalıştığı ekiplerde uyumsuzluk çıkarabilmesidir. Ayrıca yazılımcı , kodun evrensel olmasını ister , bu yüzden kelimelerin İngilizce yazılması her zaman daha doğru bir yaklaşım olur. “Yaş” yerine “age”, “toplamFiyat” yerine “totalPrice” gibi isimler projenin uluslararası standartlara daha uygun görünmesini sağlar.

Değişken adı seçerken dikkat edilmesi gereken bir diğer konu ise ismin anlamlı olmasıdır. Kod yazarken “a”, “b”, “x”, “data”, “value” gibi neyi ifade ettiği belirsiz kelimeler kullanmak hem seni hem de okuyanı zorlar. Yine belli bir aradan sonra yazılımda bir güncelleme yapılacağı zaman değişkenlere verilen anlamsız isimlendirmeler hangi kodun neresi ile ilgili olduğunu karıştırmanıza sebep olabilir ve olası yanlış bir müdahalenin önünü açar. Bunun yerine değişkenin ne amaçla kullanıldığını açıkça anlatan isimler seçmek çok daha sağlıklıdır. Örneğin bir oyundaki oyuncu canını “c” yerine “oyuncuCan” olarak yazmak, hem anlaşılır hem de ileride kodu okurken zaman kazandıran bir yaklaşımdır.

C# içerisinde bazı kelimeler vardır ki, bunlar dilin kendisine aittir ve özel anlam taşır. Bunlara “anahtar kelime” denir. “class”, “int”, “namespace”, “public”, “return” gibi ifadeler değişken adı olarak kullanılamaz. Bu kelimeleri değişken adı yapmaya çalışırsan derleyici hata verir. Teknik olarak başına “@” ekleyerek kullanmak mümkün olsa da, profesyonel geliştiriciler tarafından kesinlikle tercih edilen bir yöntem değildir.

Bazen birden fazla benzer değeri tutmak için değişken isimlerinin sonuna sayı ekleme eğilimi olabilir. Örneğin “fiyat1”, “fiyat2”, “fiyat3” gibi. Fakat bu yöntem, yazılımın büyüdüğü projelerde problemi çözmekten çok karmaşaya neden olur. Bunun yerine değişkenleri daha özel ve amacını anlatır şekilde isimlendirmek gerekir. Örneğin “indirimliFiyat”, “normalFiyat”, “premiumFiyat” gibi isimler hem daha açıklayıcıdır hem de kodun okunabilirliğini ciddi şekilde artırır.

Son olarak, değişken isminin uzunluğu da önemlidir. Yukarıda belirttiğimiz gibi , Çok kısa ve anlamsız kelimeler işe yaramaz; ancak aşırı uzun isimler de kodu hantallaştırır , projede çalışan diğer yazılımcılar içinde çözümlemek zor olabilir ve olası bir yanlış harf basımından kaynaklı yazılımsal hatalar verebilir ve burada hatanın tespit edilebilmesi de belki haftalar alabilmektedir. Burada amaç, kısa ama açıklayıcı bir ifade kullanmaktır. Değişkeni gördüğünde “Bu değişken neyi tutuyor?” sorusunun cevabı hemen anlaşılabiliyorsa doğru yoldasın.

Kısacası, C#’ta değişken isimlendirirken birkaç temel prensibi takip etmek yeterlidir:

✅ Harfle başla,

✅ camelCase kullan,

✅ Türkçe karakterlerden uzak dur,

✅ Anlamlı kelimeler seç,

✅ Anahtar kelimelerden kaçın ve ,

✅Sayılarla anlam üretmeye çalışma.

Bu kuralları uyguladığında hem düzenli hem de profesyonel görünen bir kod yazmış olursun.

Değişkenler Bellekte Nasıl Saklanır?

Bir program çalıştığında bilgisayarın yaptığı en temel şey, kullandığın verileri geçici olarak RAM (bellek) içine yerleştirmektir. C#’ta oluşturduğunuz her değişken, RAM’de kendine ait küçük bir “yer” kazanır. RAM i burada içi değişkenlerle dolu koca bir depo olarak düşünebilirsiniz. Ya da yukarıda anlattığımız şekilde koca bir dolap içine konan küçük kutular olarak düşünebilirsiniz.

Her bir değişkenin bir adı , bir değeri ve bir de türüne göre kapladığı bir alan vardır.

int yas = 25;

bu kodu inceleyecek olursak , yas burada değişkenin adıdır. int ise değişkenin türüdür. 25 ise değişkenin değeridir. Sistem bu kod için bellekte 4 byte lık yer açar ve bunu depolar. Eğer 25 değeri değişirse örneğin yeni değer aşağıdaki gibi 30 olursa ,

int yas = 25;
yas = 30;

Bu durumda yeni bir kutu ( değişken ) açılmaz mevcut olan değişkenin değeri silinir ve yeni değer işlenir.

Bellekte İki Bölüm Vardır: Stack ve Heap

C#’ta uygulama çalıştığında, bilgisayarınızın RAM’i (geçici bellek) programınızın kullanması için iki ana bölüme ayrılır: Stack ve Heap.

C# stack heap farkı görsel
C# stack heap farkı görsel

Stack (Yığın)

Stack’i, Düzenli Bir İstiflenmiş Evrak Sepeti gibi düşünebilirsiniz. Stack, çok düzenli ve kuralcı bir yapıdır. Bilgiler üst üste, belirli bir sırada yerleştirilir Burada LIFO kuralı söz konusudur. (LIFO – Last-In, First-Out, yani Son Giren İlk Çıkar kuralı). Genellikle değer tipleri (Value Types) ve referans tiplerinin işaretçileri/adresleri burada saklanır. ( int, double, bool vb )Okuma – Yazma işlemleri bu bölümde çok hızlı gerçekleşir. Çünkü yerleştirme sırası kesindir ve derleyici (compiler) her şeyin nerede olduğunu bilir.

Stack’in boyutu genellikle küçüktür ve önceden belirlenmiştir. Bir metot çağrıldığında (örneğin, bir fonksiyon çalıştığında), o metotla ilgili tüm Stack bilgileri eklenir. Metot işini bitirip çıktığında, bu bilgiler otomatik ve anında silinir.

Heap (Öbek)

Az önce Stack için nasıl düzenli bir şekilde istiflenmiş dediysek , Heap ise bunun tam tersi büyük , karmaşık , kocaman bir depo olarak düşünebilirsiniz. Stack ta olduğu gibi bir düzen olmadığından , veriler, nereye sığabilirse oraya rastgele yerleştirilir. Bir bilgiye ulaşmak için, Stack’te saklanan adrese bakmak gerekir.

Genellikle referans tiplerinin (Reference Types) asıl verileri/nesneleri burada saklanır. Örnek olarak string (metin dizileri), class‘lar (sınıflar), array‘ler (diziler).

Stack’e göre daha yavaştır çünkü veri parçalarının belleğin neresinde olduğunu bulmak için biraz daha fazla “aramak” gerekir. Heap boyutu’da dinamiktir ve ihtiyaca göre değişkenlik gösterebilir. Buradaki veriler stackta olduğu gibi , bir metot sonlandığında otomatik olarak silinmez. Kullanılmayan veriler, C#’ın en önemli özelliği olan Garbage Collector (Çöp Toplayıcı) tarafından toplanıp bellekten temizlenir.

Stack ve Heap belleklerinin karşılaştırmalı tablosu

ÖzellikStack (Yığın) – Düzenli SepetHeap (Öbek) – Karmaşık Depo
İçeriğiDeğer Tipleri (int, bool), Referans Tiplerinin AdresleriReferans Tiplerinin Asıl Verileri (string, class, array)
DüzenLIFO (Son Giren İlk Çıkar), çok düzenliDüzensiz, dağınık
HızÇok HızlıStack’e göre yavaş
SilinmeOtomatik ve Anında (Metot bitince)Garbage Collector (Çöp Toplayıcı) ile daha sonra

Bu yazımızda sizlere C# üzerinde değişkenler hakkında bilmeniz gereken tüm bilgileri verdik. Oldukça önemli bir konu olduğu için en ufak detayına kadar sizlere anlatmaya çalıştık. Eğer anlattıklarımız dışında iletmek istediğiniz başka bilgiler varsa iletişim bölümümüzü kullanabilir ya da bu yazının altına yorum olarak yazabilirsiniz.

Sitemiz dışında C# değişkenler konusunda bilgi arıyorsanız w3schools adresinden faydalanabilirsiniz.

Bu yazıya Oy Ver post
Cevap bırakın

E-posta hesabınız yayımlanmayacak.