String tipinde değişkenin hafızada kapladığı alan
Hangi .Net yazılımcısına sorsanız, string tipinde değişkenin hafızada kapladığı yeri hesaplamak için, karakter sayısını 2 ile çarpmak gerektiğini söyler (UTF-8 kodlama).
Genel olarak kabul gören bu hesaplama yöntemi, birçok durumda gerçeğe çok yakın sonuç üretir. Fakat sonuç tam olarak doğru değildir.
UTF-8 (Unicode Transformation Format) hakkında daha fazla bilgiyi Wikipedia‘da yeralan şu makale‘den edinebilirsiniz.
Peki string değişkenin hafızada kapladığı alanı tam olarak nasıl hesaplayacağız?
string OrnekString = "ἄλφα βῆτα γάμμα δέλτα deneme test";
MessageBox.Show("Uzunluk * 2: " + OrnekString.Length * 2 + " Byte");
MessageBox.Show("Gerçek uzunluk: " + Encoding.UTF8.GetByteCount(OrnekString).ToString() + " Byte");
OrnekString.Length * 2: 66 Byte değerini üretirken,
Encoding.UTF8.GetByteCount(OrnekString): 53 Byte değerini üretmiştir.
String değişkenlerin hafızada kapladığı alanı tam olarak hesaplamanız gerektiği durumlarda, Encoding.UTF8.GetByteCount() fonksiyonunu kullanmanızı öneririm.
İlgili diğer başlıklar:
- Dosyanın UTF8 Formatında Olduğunu Belirleme
- C# String Dizisini String Uzunluğuna Göre Sıralama
- C# String Dizisini String Uzunluğuna Göre Sıralamak
- C# ile string sınıfına ContainsText isimli ExtensionMethod yazalım
- C# MD5 yöntemi ile metin şifreleme
- C# İsimsiz Tipler – Anonymous Types
- C# Null Coalescing (??) Operatörü
- TPL (Task Parallel Library) – Task Class
- C# String’i Title Case’e (Kelimelerin Baş Harfleri Büyük Gerisi Küçük) Çevirme
- C# Veri Tipleri