C# : 3 – Tip Dönüşümleri ve Tip Dönüşümlerinde Performans Analizi

Bu yazıda C#’da bulunan tip dönüşümleri fonksiyonları, bu fonksiyonların iç yapıları ve birbirlerine göre performans değerlendirmelerine yer verilecektir.

-String tipine dönüştürme
Geliştirilen uygulamaların çoğunda karşımıza en fazla çıkacak dönüştürme işlemlerinden biri stringe dönüştürme işlemidir. İlk seçeneğimiz ToString() fonksiyonudur. Bir önceki yazımızda belirttiğimiz gibi tüm veri tiplerimiz object veri tipinden türemiştir. Object sınıfının fonksiyonları diğer veri tiplerine kalıtımla geçmiştir. Bu sebeple herhangi bir değişkenin ToString() fonksiyonunu çağırarak string ifade olarak sonuç elde edebilirsiniz. Bir diğer yol Convert.ToString () fonksiyonudur. Convert sınıfı kullanılarak da dönüşüm işlemi gerçekleştirilebilir. Bu iki yöntem arasında ki en büyük fark Convert.ToString() null değerleri yakalayabiliyorken .ToString() fonksiyonu yakalayamamaktadır. Bunun anlamı boş bir değer döndüğünde Convert.ToString() fonksiyonu string ifadenin boş olduğunu belirten String.empty değerini döndürür. object tipinden kalıtım olan .ToString() fonksiyonu ise böyle bir durumda null referans hatası vermektedir. Bir nesne üzerinde .ToString() fonksiyonunun çağırılması durumunda, nesnenin null olmadığı varsayılır. Çünkü nesne üzerinden bir fonksiyon çağırılması içi önce nesnenin varolması gereklidir. Convert.ToString() fonksiyonu, Convert sınıfında statik bir fonksiyon olduğu için, böyle bir varsayımda bulunmak zorunda değildir. Aksine boşsa String.empty değerini döndürür.
Bu sebeple program kararlılığı açısından Convert.ToString(obj) fonksiyonunun kullanılması tercih edilmesi tavsiye ediliyor.

-Integer tipine dönüştürme
Konsol uygulamaları olsun form uygulamaları olsun en çok ihtiyacımız olacak dönüştürme işlemi olabilir. Integer tipine dönüştürmek için kullanacağımız fonksiyonlardan biri Int32.Parse() fonksiyonu genellikle string ifadeleri integer’a dönüştürmek için kullanılan bir fonksiyondur. Yani elimizde bir ifade var ve biz bunun her zaman integer olduğunu biliyoruz. Bu durumlarda daha çok Int32.Parse() fonksiyonu tercih edilmektedir. Bir başka yöntem Int32.TryParse() fonksiyonunu kullanmaktır. Örneğin bir kullanıcıdan veri alınan bir işlem var. Kullanıcı geçersiz bir veri girdiğinde durum üzerinde daha ayrıntılı denetime izin verdiği için Int32.TryParse() fonksiyonunun kullanılması önerilmektedir. Bir diğer yöntem ise string dönüştürmede de kullandığımız Convert sınıfının ToInt32() fonksiyonunu kullanmaktır. Parametre olarak object türünde veriler almaktadır ve Null referans hatasına düşmeden sonuç boş döndüğünde sıfır döndürmektedir.
Genel anlamda Convert.ToInt32() ve Int32.TryParse() aynı performansa sahip diyebiliriz. Çünkü Convert.ToInt32() içerisinde Int32.TryParse() fonksiyonunu tetiklemektedir.

Convert.ToInt32() fonksiyonu ArgumentNullException hatasından kurtulması sebebiyle Int32.TryParse() fonksiyonundan bir nebze daha yavaş çalışmaktadır. Pratikte çok büyük bir veri kümesi ile çalışılmayacaksa ve çok fazla iterasyon sayısına sahip bir döngü kurulmayacaksa aradaki fark farkedilemeyecek düzeyde kalacaktır.

-Örnek Kod Parçası


-ToInt32 Fonksiyonunun char Parametre Alması Durumu

Convert.ToInt32(‘1’); // Dönen değer 49
int.Parse(‘1’); // Dönen değer 1

Fonksiyon sonuçlarında görüldüğü gibi daha sağlılı olmasından dolayı Parse veya TryParse() fonksiyonları tercih edilmelidir.

Bir diğer örneğe linkten ulaşabilirsiniz.

csharp3

1 geri izleme / bildirim

  1. C# : 2 - Veri Tipleri - Teknoloji İncelemeleri

Bir yanıt bırakın

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


*