Yazılım Notları
Bilgi Paylaştıkça Çoğalır...

C Sharp Temelleri - 7: Nesne Tabanlı Operasyonlar

String, DateTime, TimeSpan, Array

Nesne Tabanlı Operasyonlar

.NET tamamen nesneye yöneliktir. Gerçekten de, basit değişkenler bile çok gelişmiş nesnelerdir. Yani, ortak veri tipleri merindeki karakter sayısının hesaplanması gibi basit operasyonları yapabilecek niteliktedir. Dahası, metin tarih ve sayıları C# ve Visual Basic’te aynı şekilde manipüle edilebilir.

Örneğin, .NET sınıf kütüphanesindeki bütün tipler ToString() metoduna sahiptir. Bu metodunun varsayılan kullanılışı sınıf(class) adını verir. Basit değişkenlerde verilen bir değişkenin metin karşılığı gibi daha kullanışlı sonuçlar alınır.

string strSayi;

int sayi = 100;

 

// Bir sayının metne dönüştürülmesi.

strSayi = sayi.ToString(); //strSayi="100" sonuç çevirir.

 

Aşağıda, .NET veri tiplerinin nesne tabanlı unsurları detaylı bir şekilde incelenecektir.

 

String Tipi

string metin = "Bu bir test metnidir        ";

       metin = metin.Trim();                       //="Bu bir test metnidir"

       metin = metin.Substring(0, 5);              //="Bu bir"

       metin = metin.ToUpper();                    //="BU BİR"

       metin = metin.Replace(" Bİ", "RSA");        //="BURSA"

       int uzunluk = metin.Length;                 //=4

 

Yukarıdaki birkaç metod (Trim(), Substring(), ToUpper(), Replace() gibi) gömülü (built-in) metotlardır (method). En sondaki Length ise, bir özelliktir (property).

Substring() metodu iki tane parametre ister. Bunlardan birincisi, metnin kesilmeye başlanacağı ilk karakterin bulunduğu konum(index) tir. İkinci parametre ise, bu noktadan itibaren kaç karakter uzunluğunda kesileceğidir. Index, sıfır tabanlıdır, yani ilk karakterin konumu her zaman sıfır(0)’dır.

Aynı satırda birden fazla gömülü (built-in) metot ardışık olarak kullanılabilir. Şöyle ki:

string metin = "Bu bir test metnidir        ";

metin = metin.Trim().Substring(0, 5).ToUpper().Replace(" Bİ", "RSA"); //=BURSA

       Label1.Text = metin;

 

Aşağıda, System.String sınıfının bazı kullanışlı üyeleri gösterilmiştir.

Üye

Tanımı

Length

Metindeki karakter sayısını verir

 

ToUpper() be ToLower()

Metindeki tüm karakterleri küçükse büyük harfe, büyükse küçük harfe dönüştürerek bir kopyasını verir

 

Trim(), TrimEnd(),

TrimStart()

Metnin sonundaki(End), başındaki(Start) ya da her iki baştaki boşlukları ya da belirtilen karakterleri çıkarır.

 

PadLeft(), PadRight()

Metnin belirttiğiniz uzunluğa ulaşana kadar, uygun tarafına eklenmesini istediğiniz karakteri ekler. Örneğin:

 

metin = "Merhaba".PadLeft(10, '@');   //=@@@Merhaba

 

Merhaba metnini, uzunluk toplamı 10 olana kadar sol tarafına @ işareti(3 tane daha) ekler.

 

Insert()

Bir metni verilen bir konumu dikkate alarak başka bir metnin içine yerleştirir. Indeks konumu belirtilirken sıfır-tabanlı olduğu unutulmamalıdır. Örneğin:

 

metin = "rhaba".Insert(0, "Me"); //=Merhaba

 

 

Remove()

Belirtilen pozisyondan itibaren, belirtilen sayıda karakteri çıkarır.

metin = "Merhaba".Remove(0, 3);     //=haba

 

Replace()

Metinde bulunan bütün karakter ya da karakter grubunu belirtilenle değiştirir. Örneğin :

 

metin = "Merhaba Merhaba".Replace("erhaba", "alatya");  //=Malatya Malatya

 

Substring()

Bir metnin belirtilen konumundan itibaren, belirtilen uzunluktaki kısmını yeni bir string olarak verir.

 

StartsWith(), EndsWith()

Bir metnin belirtilen bir metinle (substring) başlayıp başlamadığını ya da bitip bitmediğini geri çevirir. Eğer metin, belirtilen karakterle başlıyorsa ya da bitiyorsa sonuç TRUE, aksi halde FALSE döner.

 

IndexOf(), LastIndexOf()

Bir metnin başka bir metin içindeki sıfır-tabanlı pozisyonunu bulur. Bu sadece, ilk eşleşme sonucunu verir. Bu metodun overload metotları da bulunmaktadır. Bu metotlarda da, aramaya başlayacağı pozisyonu belirtebilirsiniz.

 

Split()

Bir metni, belirtilen bir metni ayırıcı (delimiter) olarak kullanarak metin dizisine(Array) çevirir. Mesela, Split(“.”) metoduyla, bir paragrafı cümle dizisine çevirebilirsiniz.

 

 

DateTime ve TimeSpan Tipleri

DateTime ve TimeSpan veri tipleri de gömülü (built-in) metot ve özelliklere sahiptir. Bu sınıf üyeleri 3 kullanışlı işi gerçekleştirmenize imkân tanır:

·         Bir DateTime’ ın sadece bir kısmını  (örneğin sadece ay, yıl ya da gün gibi) çıkarabilirsiniz ya da bir TimeSpan’ i belirli bir şekilde görüntüleyebilirsiniz (toplam gün sayısı ya da toplam dakika sayısı gibi)

·         Tarih hesaplamalarını kolayca gerçekleştirebilirsiniz

·         Şu anki tarih, zaman ve haftanın günü, artık yıl gibi diğer bilgileri kolayca belirleyebilirsiniz.

Örneğin, aşağıdaki kod bloğunda bir DateTime nesnesi oluşturuluyor, bu nesneye şu anki tarih ve zaman değeri atanıyor. Sonra da, belirli sayıda bir gün sayısı ekleniyor. Daha sonra, yeni tarih ve zamanı metne çeviriyor.

DateTime tarihZaman = DateTime.Now;

       tarihZaman = tarihZaman.AddDays(100);

       string strTarihZaman = tarihZaman.Year.ToString();

 

Aşağıdaki örnek, iki DateTime nesnesi arasındaki toplam dakika sayısını bulmak için TimeSpan nesnesinin nasıl kullanılabileceğini göstermektedir.

DateTime tarih1 = DateTime.Now;

       DateTime tarih2 = DateTime.Now.AddHours(3000);

       TimeSpan fark;

       fark = tarih2.Subtract(tarih1);

 

       double dakikaSayisi;

       dakikaSayisi = fark.TotalMinutes;

 

 

Burada dakikaSayisi değişkeninin değerinin 3000 saat x (60 dak./saat) = 180.000 olarak bekliyoruz. Bu kodu çalıştırdığımızda gerçekten de sonucun 180.000 olduğunu görürüz.

DateTime ve TimeSpan sınıfları + ve – ile yapılan aritmetik işlemleri de desteklemektedir. Yani yukarıdaki örneği aşağıdaki şekilde de yazabiliriz.

DateTime tarih1 = DateTime.Now;

       TimeSpan eklenecekSure = TimeSpan.FromHours(3000);

       DateTime tarih2 = tarih1 + eklenecekSure;

TimeSpan fark;

       fark = tarih2 - tarih1;

 

Aşağıda en çok kullanılan DateTime metotlarının bir listesi gösterilmiştir:

Now

Şu anki tarih ve zamanı verir. UtcNow özelliğini kullanarak bilgisayarın local time zone özelliğini dikkate alabilirsiniz.

 

Today

Şu anki tarih bilgisini alır ve zaman kısmını 00:00:00 olarak bırakır.

 

Year, Date, Month, Hour, Minute, Second ve Millisecond

DateTime nesnesinin bir kısmını integer olarak geri çevirir. Örneğin Aralık ayındaki herhangi bir günün Month özelliği 12 değerini verecektir.

 

DayOfWeek

 

DateTime nesnesinin, haftanın hangi günü olduğunu DayOfWeek özelliği kullanılarak geri çevirir. Örneğin, eğer tarih Pazar ise, DayOfWeek.Pazar sonucu döner. Bu enumeration olduğu için int ile Cast edilirse, haftanın kaçıncı günü olduğu sonucunu verir.

 

Add(), Subtract()

Bir tarihe bir TimeSpan ekler ya da çıkarır.

 

AddYears(), AddMonths(), AddDays(),AddHours(), AddMinutes(), AddSeconds(), AddMilliseconds()

DateTime nesnesine yıl, ay, gün, saat vs. yi temsil eden integer bir değer ekler ve yeni bir DateTime nesnesi oluşturmuş olur. DateTime nesnesinden eksiltme (subtract) yapmak için integer değerini negatif yazabilirsiniz.

 

DaysInMonth()

 

Belirli bir yılın, belirli bir ayında kaç gün olduğu sonucunu verir.

 

IsLeapYear()

Belirtilen yılın artık yıl olup olmadığını geri çevirir. Eğer artık yıl ise, sonuç TRUE, artık yıl değilse sonuç FALSE olur.

 

ToString()

DateTime nesnesini temsil eden bir string çevirir. Bu metodun overload metotları da bulunmaktadır ve bazı format parametreleri vererek farklı string sonuçlar elde edilebilir.

 

 

 

En çok kullanılan TimeSpan metotları ise aşağıda gösterilmiştir:

Days, Hours, Minutes,

Seconds, Milliseconds

Mevcut TimeSpan nesnesinin bir bileşenini gösterir. Örneğin, Hours özelliği -23 ile 23 arasında integer bir sayı döndürür.

 

TotalDays, TotalHours, TotalMinutes, TotalSeconds, TotalMilliseconds

Şu anki TimeSpan’ in gün, saati dakika gibi sayı olarak toplam değerini verir. Sonuç double tipindedir. Dolayısıyla, sonuç virgüllü olabilir. Mesela, TotalDays özelliği 234,1564 şeklinde çıkabilir.

 

Add(), Subtract()

TimeSpan nesnelerini birleştirir. Kolay kullanım için bu metotlar yerine + ve – işleçleri de kullanılabilir.

 

FromDays(),FromHours(), FromMinutes(), FromSeconds(), FromMilliseconds()

Bu metotlar, kolayca yeni bir TimeSpan oluşturmanıza imkân verir. Örneğin, 24 saat uzunluğundaki bir TimeSpan nesnesi oluşturmak için TimeSpan.FromHours(24) kullanabilirsiniz.

 

ToString()

Şu anki TimeSpan nesnesini temsil eden bir string çevirir. Bu metodun overload metotları da bulunmaktadır ve bazı format parametreleri vererek farklı string sonuçlar elde edilebilir.

 

Array (Dizi) Tipi

Diziler  de .NET dünyasındaki nesneler gibi davranırlar. (Teknik olarak söylemek gerekirse, her dizi aslında System.Array tipinin bir örneğidir[instance].) Örneğin tek boyutlu bir dizinin boyutunu bulmak isterseni, bu dizinin Length özelliğini (property) ya da GetLength() metodunu kullanabilirsiniz. Bunlardan ikisi de bir dizideki toplam eleman sayısını verir.

 

int[] sayiDizisi = { 1, 2, 3, 4, 5 };

int elemanSayisi;

elemanSayisi = sayiDizisi.Length;   //elemanSayisi=5

 

 

Bir dizideki en yüksek indeks numarasını (dolayısıyla da eleman sayısını) bulmak için GetUpperBound() metodunu da kullanabilirsiniz. Bu durumda, dizi kaç boyutluysa, bu boyutlardan hangisindeki eleman sayısını bulmak istiyorsanız o boyutun indeksini parametre olarak verilmesi gerekir. Örneğin dizi, tek boyutluysa GetUpperBound() metoduna indeks olarak 0(sıfır) değeri yani ilk kolonun indeks değeri gönderilir. Eğer dizi iki boyutluysa, birinci boyutundaki eleman sayısını bulmak için 0(sıfır) ikinci boyutundaki eleman sayısını bulmak için 1 gönderilir.

 

int[] sayiDizisi = { 1, 2, 3, 4, 5 };

       int boyut;

//Sıfır(0) dizinin ilk boyutunu temsil eder. Yani Satır Sayısını

       boyut = sayiDizisi.GetUpperBound(0);    //=4

 

Tek boyutlu bir dizide GetUpperBound() metodu her zaman eleman sayısının bir eksiği değerini verir. Bunun sebebi, ilk indeks sayısı 0(sıfır) ve son indeks sayısının ise toplam eleman sayısının bir eksiği olmasıdır. Yani bu metot kullanılarak dizideki eleman sayısını bulmak için elde edilen sonuca 1 eklenmelidir.

int[,] sayiDizisi = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

int sayirSayisi = sayiDizisi.GetUpperBound(0)+1;    //satirSayisi=4

int kolonSayisi = sayiDizisi.GetUpperBound(1) + 1;  //kolonSayisi=2

 

Dizilerin bazı metot ve özellikleri aşağıda listelenmiştir.

Length

Bir dizinin bütün boyutlarında bulunan toplam eleman sayısıdır. Örneğin. 3x3 boyutlu bir dizinin eleman sayısı(Length) 9 dur.

 

GetLowerBound() GetUpperBound()

Bir dizinin boyutunu belirtir. .Net te herşeyde olduğu gibi burada da saymaya sıfırdan başlanması gerekir.

 

Clear()

Bir dizinin içeriğinin tümünü ya da bir kısmını, belirtilen indekse göre boşaltır. Elemanlar başlangıç değerlerine geri dönerler.

 

IndexOf() LastIndexOf()

Tek boyutlu bir dizide belirtilen değeri arar ve bulunduğu indeks rakamını verir. Bu özelliği çok boyutlu dizilerde kullanamazsınız.

 

Sort()

String ve sayılar gibi karşılaştırılabilir verilerden oluşan tek boyutlu bir diziyi sıralar.

 

Reverse()

Tek boyutlu bir diziyi elemanları ters sıradan başlayacak şekilde sondan başa doğru ters çevirir.

 

 

 

 

 

ETİKETLER : C Sharp
 

Banka Hesap Numaralarınızı, IBAN Numaralarınızı bir kere telefonunuza kaydedin. İhtiyaç duyduğunuzda elinizin altında olsun.

Banka Hesaplarım

En Güzel Sözler Uygulaması İçin


Ana Sayfa       Arama       Valid CSS!
Önceki Makale
Sonraki Makale