Volkan Atasever

mühendislik, edebiyat, retro computer, yazılım, şiir, nümismatik, bilişim, podcast ve daha bir çok yazılarım...

C# 7 ile gelen Yeni Özellikler

clock Eylül 4, 2017 17:23 by author Volkan Atasever

§  Out Anahtar Kelimesi

§  Pattern Matching

§  Switch Expression

§  Yerel Fonksiyonlar

§  Tuples

§  Binary Literal

§  Metotların Ref Döndürmesi

§  Throw Expression

 

Yerel Fonksiyonlar

C# 7 ile birlikte fonksiyon içinde fonksiyon tanımlayabilmemizin önü açıldı. Bu sayede artık yerel fonksiyonlar tanımlayabileceğiz.

 

public int fonksiyon1(int sayi1,int sayi2)

    {

        int fontsiyon(int sayi)

        {

                sayi++;

            return sayi*=sayi;

        }

     

        return fonksiyon(sayi1)+sayi2;

    }

 

Binary Literal

Bu özellikle birlikte sayısal ifadeler binary olarak tanımlanabilecek. Aynı zaman da digit ayraçlarıyla büyük sayıları binary veya heksadesimal olarak ayırabileceğiz. Bu daha kolay okuma da sağlayacaktır.

int sayi1 = 2_000_123;

int sayi2 = 0x3EEE_1111;

int sayi3 = 0b0001_1100_1111_0000;

var d = 123_456;

var x = 0xAB_CD_EF;

 

Metotların Ref Döndürmesi

Metotlara C# programlama dilinde ref değer gönderebiliyorduk. C# 7 ile beraber metotlar ref değeri de döndürebilecek. bu Referans tipi olarak dönmektedir.

public ref int Bul(int sayi, int[] sayilar)
{
    for (int i = 0; i < sayilar.Length; i++)
    {
        if (sayilar[i] == sayi) 
        {
            return ref sayilar[i]; 
        }
    }
    thrownew IndexOutOfRangeException($"{nameof(sayi)} bulunamadı!");
}

 

 

Out Anahtar Kelimesi

Out anahtar kelimesini kullanarak daha önce metotlara parametre geçirebiliyorduk. Out parametresi birden çok değer döndürmek istediğinizde oldukça popüler bir kullanıma sahiptir. bildiğiniz gibi out parametresi referans tipidir ve bir argüman olarak çalışmaktadır. Fakat out parametreye geçireceğiniz değişkeni daha önce tanımlamanız gerekmektedir.  C# 7 ile birlikte out parameteresi olarak değişkenleri aynı anda tanımlayabiliyoruz.

publicvoid KooridnatCiz(Point p)
{
    p.GetCoordinates(out int lang, out int long);
    WriteLine($"({lang}, {long})");
}

 

Out parametresinde değişken tanımlanın yanında var tipi değiştekde tanımlayabilirsiniz. Değişkenin kullanıdığı zaman sadece sınırlı kapsam içerdiğini dolayısıyla bunları metotun dışında kullanamayacağınızı unutmayın. Değişkeni doğrudan argüman olarak tanımlayabildiğimiz için C# 7 bunlarıda da var değer olarak tanımlamamıza izin verir. Dolayısıyla hangi tip değişken tanımladım diye kontrol yapmanıza gerek kalmaz. bildiğiniz gibi var tipi değişkenler dönüşebilmektedir.

 

p.KooridnatCiz(out var lang, out var long);

 

Pattern Matching

is anahtar kelimesi ile Pattern Matching özelliğini kullanabiliriz. Örneğin bir type pattern yaparak çalışma zamanında tipe göre işlem yapabiliriz.

publicvoid deneme(object o)
{
    if (o isnull) return;     // sabit pattern "null"
    if (!(o isint sayi)) return; // tip pattern "int sayi"
    WriteLine(new string('*', sayi));
}

 

Switch Expression

switch-case yapısı daha önceki c# programlama dili versiyonlarında oldukça sınırlıydı. Artık daha kompleks yapılar kurabiliyor ve null kontrolü, sınıf kullanımı gibi özellikleride switch- case yapımızda kullanabiliyoruz.

Örnek 1:

switch(sekil)

{

    case Daire c:

        WriteLine($"circle with radius {c.Radius}");

        break;

    case Ucgen s when (s.Length == s.Height):

        WriteLine($"{s.Length} x {s.Height} kare");

        break;

    case Ucgen r:

        WriteLine($"{r.Length} x {r.Height} üçgen");

        break;

    default:

        WriteLine("bilinmeyen şekil");

        break;

    casenull:

        thrownew ArgumentNullException(nameof(sekil));

}

 

Örnek 2:

public static int deneme(IEnumerable<object> values)

{

    var toplam = 0;

    foreach (var item in values)

    {

        switch (item)

        {

            case int val:

                toplam += val;

                break;

            case IEnumerable<object> altListe:

                toplam += deneme(altListe);

                break;

        }

    }

    return toplam;

}

Tuples

Tuples kullanımı eski bir kullanım olmasına rağmen c# 7 ile yenilenerek gelmiştir. tuple type ve tuple literal bir yenilik olarak karşımıza çıkmaktadır. Tuple tipleri değer tipi değişkenlerdir. System.Tuple isim alanını kullanmaktadır. Birden fazal değer döndürmek için Tuple kullanabilirsiniz. Birden fazla parametre olsa dahi tek nesne olarak işlem görmektedir. Çoklu değer döndürmek için out paramtresi tercih etmeden değer döndürebilirsiniz.

( string, string, string, string) getKisi()

{

    //Kişi bilgilerini veritabanından veya başka bir kaynaktan okuyabilirsiniz

    string strIsim = "Volkan";

    string strAdres = "Kadıköy";

    string strSehir= "İstanbul";

     return(strIsim, strAdres, strSehir); // tuple literal

}

 

//aşağıdaki metotu çağırdınızda çoklu değerleri döndürecektir.

 var kisiBilgi= getKisi();

WriteLine("Kisi bilgi:  {kisiBilgi .Item1} {kisiBilgi .Item2} {kisiBilgi .Item3}");

 

Yukarıdaki örnekte çoklu değerleri tuple kullanarak kolayca elde edebiliyoruz. Fakat item1,item2 isimleri alakası ve kafa karıştırıcıdır. bu yüzden anlamlı isimler kullanarak aşağıdaki örneği inceleyelim.

 

(string strIsim, string strAdr, string strSe) getKisi()

{

    //kodlarınızı buraya yazıyorsunuz

}

 

//metotu belirlenmiş ismi ile çağırdığınız zaman değerler aşağıda gözükecektir

var kisiBilgi= getKisi();

WriteLine("kisi bilgi: {kisiBilgi.strIsim} {kisiBilgi.strAdr} {kisiBilgi.strSe} ");

 

Bunlara ek olarak tüm değerleri Tuple Literal olarakta döndürebilirsiniz.

return (strIsim: strIsim, strAdr: strAdres, strSe: strSehir);

Tuple Hash tablosu veya Dictionary kullanarak kolayca değiştirebileceğiniz ve döndürebileceğiniz bir sisteme sahiptir. Tek durumda birden fazla değeri depoladığınız List yerinede kullanabilirsiniz. .NET üstünde bir Tuple tip tanımlıdır. Bu referans tipi bir değişkendir. C#ile gelen değiştirilebilir değer türü Tuple ise daha performanslıdır.

Bazı zamanlarda tüm tuple paketine ulaşmadan sadece değerlerine ihtiyacınız olabilir. O zaman C# 7 ile gelen Deconstruction özelliğini kullanarak istediğiniz parçayı oradan çekip alabilirsiniz.

( string strIsim,  string strAdr,  string strSe) = getKisi();

Console.WriteLine($"Adres: { strAdr }, Şehir: { strSe }");

 

Throw Expression

Bir try-catch yapısının herhangi bir yerinde throw kullanabilirsiniz. C# 7 ile istediğiniz bir yerde throw fırlatabilirsiniz.

class Kisi

{

    public string isim { get; }

    public Kisi(string isim_) => Name = isim_ ?? throw new ArgumentNullException(isim_);

    public string ilkismigetir()

    {

        var parts = isim.Split(" ");

        return (parts.Length > 0) ? parts[0] : throw new InvalidOperationException("isim yok!");

    }

    public string sonismigetir() => throw new NotImplementedException();

}



Donanım ile ilgili Temel Bilgiler

clock Mayıs 20, 2017 00:27 by author Volkan Atasever

Bazı bilgisayar programlama bölümlerinde gösterilen donanım derslerinde sorulan birkaç soru ile karşılaştım. bunların cevaplarını faydalı olması için kaynakçaları ile beraber aşağıda paylaşmaktayım.

Aşağıdaki kısaltmaların ne anlama geldiğini ve kapasitelerini (hızlarını) tabloya yazınız. Bilgileri bulduğunuz sayfaların adreslerini tablonun altına “Kaynakça” başlığı ile ekleyin.

 

Kısaltma

Açılımı

Kapasitesi (Hızı)

1

USB 1.0

 "Universal Serial Bus" 1.0

 Hız 12 Mbit/sn (1,5 MByte/sn) (fullspeed)

2

USB 2.0

 "Universal Serial Bus" 2.0

 480 Mbit/sn (60 MByte/sn) (highspeed)

3

USB 3.0

 "Universal Serial Bus" 3.0

  4,80 Gbit/sn (600 MByte/sn) (superspeed)

4

SATA

 Serial AT Attachment revision 1.0

 1.5 Gbit/s, 150 MB/s, Serial ATA-150

 

5

SATA2

 Serial AT Attachment revision 2.0

 3 Gbit/s, 300 MB/s, Serial ATA-300

 

6

SATA3

 Serial AT Attachment revision 3.0

 6 Gbit/s, 600 MB/s, Serial ATA-600

 

7

IDE

 Integrated Drive Elektronics

 Eklenen transfer modları (MB/s)

PIO 0,1,2 (3.3, 5.2, 8.3)
Single-word DMA 0,1,2 (2.1, 4.2, 8.3)
Multi-word DMA 0 (4.2)

8

SCSI

 Small Computer System Interface

 En çok tamamlanan SCSI standardı ise, saniyede 80 Mb transfer için 40 Mhz saat hızı kullanan Ultra-2'dir. En son SCSI standardı ise transfer hızını saniyede 160Mb'a çıkaran Ultra-3'dür Bu standart genelde karışıklık olmasın diye Ultra160/m olarak adlandırılıyor.

10

SSD

 İngilizce: Solid State Drive Türkçe Katı Hal Sürücü

  SSD'lerde hız 560mb/sn'dir.

 Kaynakça:

https://tr.wikipedia.org/wiki/USB

http://teknorapor.com/usb-3-0-ile-daha-hizli-baglanin/

https://en.wikipedia.org/wiki/Serial_ATA

https://tr.wikipedia.org/wiki/ATA

https://tr.wikipedia.org/wiki/SCSI

https://tr.wikipedia.org/wiki/Katı_hal_sürücü

Aşağıdaki tabloda, optik sürücülerin ve kayıt ortamlarının bir listesini görüyorsunuz.

Bu listede her ortam ile ilgili gerekli bilgileri Internetten araştırarak bulunuz.

 

Teknoloji

Toplam saklayabildiği veri miktarı (Bayt cinsinden)

Saniyede aktarabileceği veri miktarı (bayt cinsinden)

Bulduğunuz web sitesi adresi

Floppy Disket 3.5 inc.

 720 KB (DD)

1,44 MB (HD

Bunların haricinde Amiga Bilgisayarları DD Disketlere 880 KB, HD Disketlere de 1.76 MB veri yazılmaktadır.

 Motor kafasının o an disketteki hangi trackde olduğu ile alakalıdır. Bu rotasyonla birlikte doğrusal bir artış gösterir. Teorik olarak yaklaşık  500 Kbits/sec.

 https://tr.wikipedia.org/wiki/Disket

https://en.wikipedia.org/wiki/Floppy_disk

http://www.pcguide.com/vb/showthread.php?35685-Floppy-Drive-Data-Transfer-Rates

Floppy Disket 5.25 inc.

 Tek yönlü      180 KB

Çift yönlü       360 KB

Yüksek yoğunluklu    1,38 MB (HD)

 Motor kafasının o an disketteki hangi trackde olduğu ile alakalıdır. Bu rotasyonla birlikte doğrusal bir artış gösterir. Teorik olarak yaklaşık  500 Kbits/sec.

 https://tr.wikipedia.org/wiki/Disket

https://en.wikipedia.org/wiki/Floppy_disk

http://www.pcguide.com/vb/showthread.php?35685-Floppy-Drive-Data-Transfer-Rates

CD

 standard 120 mm, 700 MB CD-ROM 737 MB (703 MiB) bilgiyi taşır hata doğrulama alanlarıyla beraber  847 MB toplam

 1,000 kilobits/s, veya yaklaşık 83% that of single-speed CD‑ROM (71% of audio CD)

 A 1x rating on CD-ROMs means 150 KB/s, while 1x on DVDs stands for 1,385,000 bytes/sec, or 1.32 MB/s. 

  

https://en.wikipedia.org/wiki/Floppy_disk

https://en.wikipedia.org/wiki/CD-ROM

http://www.tomshardware.com/reviews/DVD-Burner,2447-2.html

https://en.wikipedia.org/wiki/CD_and_DVD_writing_speed

DVD

 Tek katmanlı dvd 4.7 GB

 DVD-10: çift taraflı, tek katman iki yüzünde, 9.4 GB (8.75 GiB)

 

11.080

Mbit/S – 1 x hız için

 https://en.wikipedia.org/wiki/CD-ROM

https://tr.wikipedia.org/wiki/DVD

https://en.wikipedia.org/wiki/CD_and_DVD_writing_speed

DVD Çift Katman Çift Yüz

 DVD-14: çift taraflı, çift katman tek yüzünde, diğerinde tek, 13.3 GB (12.3 GiB)

DVD-18: çift taraflı, çift katman iki yüzünde, 17.1 GB (15.9 GiB)

 11.080

Mbit/S – 1 x hız için

 https://tr.wikipedia.org/wiki/DVD

https://en.wikipedia.org/wiki/CD_and_DVD_writing_speed

HD-dvd

 HD DVD tek katmanda 15 GB ,çift katman söz konusu olduğunda ise 30 GB veri saklayabilir.

 1x hızı için 36mbit/saniye yazma hızı vardır

 https://tr.wikipedia.org/wiki/HD_DVD

https://en.wikipedia.org/wiki/CD_and_DVD_writing_speed

https://en.wikipedia.org/wiki/HD_DVD

 

BlueRay

 12 cm, tek taraflı       25 GB (23,3 GiB)      50 GB (46,6 GiB)

 1x hız için 36.000 mbit /s

 https://tr.wikipedia.org/wiki/Blu-ray_Disc

https://en.wikipedia.org/wiki/CD_and_DVD_writing_speed

BlueRay Çift katman çift yüz

 12 cm, çift taraflı       50 GB (46,6 GiB)      100 GB (93,2 GiB)

 1x hız için 36.000 mbit /s

 https://tr.wikipedia.org/wiki/Blu-ray_Disc

https://en.wikipedia.org/wiki/CD_and_DVD_writing_speed

 

Aşağıdaki soruları kendi cümleleriniz ile cevaplayınız. Bilgi topladığınız kaynakları en altta kaynakça başlığı altında belirtiniz.  Tüm sorulara verdiğiniz cevaplar toplam 1 sayfayı geçmemelidir.

a)      Monitörlerde çözünürlük ve ölü piksel nedir? Kısaca açıklayınız.

b)      Bir LCD monitörün kaliteli olduğunu hangi değerlerden anlarsınız? Kaliteli olan bir taneyi web’den bulup fiyatını ve birkaç özelliğini belirtiniz.

c)      Ses kartlarındaki “line in” girişi ne işe yarar? Kısaca açıklayınız.

d)      Intel Optane nedir? Özelliklerini kısaca belirterek açıklayınız.

a-)Çözünürlük: Uzunluk biriminde birbirinden ayırdedilebilen nokta sayısıdır. LCD monitörlerde pikseller, transistörlerle kontrol ediliyor ve bu transistörlerin herhangi birinde arıza olması, "piksel hatası" dediğimiz bir kusur oluşturuyorhttp://www.forumalev.net/images/smilies/nokta.gifLCD monitörlerde piksel kusurlarına çok sık karşılaşılmasının ana sebebi, LCD monitörlerde kullanılan transistör sayısıyla çok alaklıhttp://www.forumalev.net/images/smilies/nokta.gifHer piksel, 3 alt pikselden oluşuyor ve her alt pikseli bir transistör kontrol ediyorhttp://www.forumalev.net/images/smilies/nokta.gif1280x1024 çözünürlüğe sahip bir 17" LCD'de toplam 1280x1024x3=3http://www.forumalev.net/images/smilies/nokta.gif932http://www.forumalev.net/images/smilies/nokta.gif160 adet transistör bulunurhttp://www.forumalev.net/images/smilies/nokta.gifBu kadar transistör içerisinden aslında 1-2 tanesinin arızalı olması olağan bir durum olmasına rağmen, can sıkıcı bir durumdurhttp://www.forumalev.net/images/smilies/nokta.gif

b-) LCD (Liquid Crystal Display)

, likit kristal ekran demek. LCD şeklinde kısaltma olarak kullanılan bu televizyonlarda iki polarize cam tabaka bulunuyor ve bu tabakalar arasında ışığı geçiren yada engelleyen sıvı kristaller bulunuyor.

LED TV'lerde tıpkı LCD'ler gibi likit kristal ekran kullanılan televizyonlardır. Fakat kullanılan ışık türü ve sistemleri farklı olduğu için LED olarak adlandırılıyor. Kısacası LED TV'ler de birer LCD TV'dir.

Bunun için seçtiğim tv nin linki aşşağıdadır.

http://www.vatanbilgisayar.com/sony-kd-75xe9405-75-189-cm-4k-uhd-android-smart-led-tv-dahili-uydu-alici.html

Slim Backlight teknolojisi sayesinde ışığı sahnelere göre ayarlayan ekran güneş sızıntısı gibi görüntüleri gerçekçi aktarır. Yüksek kontrast seviyesi en koyu siyahlarda da etkili oluyor. En parlak ve en derin siyahlığı en iyi şekilde görebilirsiniz. Ultra ince tasarımı şık bir görünümdedir. HDR özelliği parlaklık, detay ve renkleri bir araya getirerek seyir zevkinizi arttırır. 75XE9405, Triluminos ekranının geniş renk gamıyla en doğru görüntünün oluşmasını sağlar. İnce kenarlı tasarımda ekran ön plana çıkarak sizi görüntülere hapseder. Ayarlanabilen arka braket odanıza uyum sağlamak için istediğiniz açıya gelir. Ayrıca kablo saklama standı sayesinde rahatsız edici görüntüler oluşmaz. 3 adet hoparlörü ile izleme keyfini eşsiz ses deneyimi ile de arttırır.

 

 

c-) buna aux girişide deriz. Herhangi bir ses cihazından gelen ses bir kablo aracılığıyla ses kartının linein girişine takılır. Bu sesi dijitalleştirebilir herhangi bir uygulamayla işleyebilir veya ses kartının hoparlöründen dinleyebiliriz.

d-) NAND belleklerin temel aldığı değişken olmayan bellek teknolojisi üzerine inşa edilen 3D XPoint, NAND belleklere göre 1000 kat daha hızlı ve 1000 kat daha fazla dayanıklı olabiliyor. Ayrıca standart belleklere göre 10 kat daha fazla yoğunluk ve kapasite sunabiliyor. Bu sayede maliyetler düşüyor, gecikme zamanları azalıyor, kapasite ve performans artıyor.  3D XPoint bit satırları ve yazı satırları arasına yerleşen ve bireysel olarak ulaşılabilen hücre yığınlarından oluşuyor. Veri depolama ve geri çağırma için bir anahtar sistemi ile birleştirilen bu yapı, elektronları hapsederek veri depolama yöntemini kullanmıyor. Bunun yerine bellek hücresinin malzemesindeki bir özelliğin değiştirilmesi sayesinde veri depolanabiliyor. Ancak Intel bununla ilgili detayları açıklamadı.  3D XPoint bellekler bu sayede bellek hücreleri daha kısa ve birbirine daha yakın şekilde paketlenebiliyor, daha yüksek yoğunluklara erişebiliyor ve küçük veri paketlerinin işlem görmesi ile daha hızlı ve daha verimli I/O performansı ortaya çıkıyor.

Kaynaklar:

http://eminislak.blogcu.com/pixel-ve-olu-pixel-nedir/6614095

http://mucahityenen.com/blog/pixel-cozunurluk-nedir/

https://blog.tamindir.com/lcd-ve-led-arasindaki-farklar_9369/

 

https://www.donanimhaber.com/ag-urunleri/haberleri/intel-Optane-bellekler-ilk-olarak-sunuculara-geliyor.htm



APK Multitools Decompile ve Compile

clock Nisan 8, 2017 02:40 by author Volkan Atasever

APK dosyalarını decompile ve compile etmek için en kullanışlı tool olara APK Multitools'u görmekteyim. APK'ları imzalamak için Windows sisteminizde JDK yüklü olması gerekmektedir. kullanımı oldukça basit ve komut isteminden çalışan bir uygulamadır. indirmek için aşağıdaki linke tıklayabilirsiniz; 

APK-Multi-Tool-APK-Multi-Tool-bf66148.zip (10,70 mb)

kurulum için setup dosyasını çalıştırıp 3 nolu seçeneği seçmelisiniz. bu işlemi bir kereliğine yapıyorsunuz. ardından scripting dosyasını açıp decompile edeceğiniz apk'yı kurulumu yaptığınız dizinin içindeki place-apk-here-for-modding dizine koymanız gerekmektedir. decompile script dosyasını çalıştırdığınız da eğer normal bir apk ise yani sistem apk sı değilse 9 rakamını tuşlayıp entera basın. projects klasörü altında apknızın ismi ile decompile edilmiş şekilde tüm dosyaları görebilirsiniz. compile yapmak için yine script dosyası ile sistem dosyası değilse apk nız 12 yi tuşlayın buradan gelen seçeneklerle unsigned yani imzasız veya imzalı apk nızı toplayıp oluşturabilirsiniz.



C# 7 Kitabım Çıktı!

clock Mart 17, 2017 04:26 by author Volkan Atasever

 

Önemli: Kitap hakkında yorumlarınızı ve sonraki baskılarda olmasını veya daha fazla üstünde durulmasını istediğiniz konuları bu postun altına yazabilirsiniz.

C# 7.0 Programlama dilini baştan sona size öğreten ve uygulayan bir kitabı elinizde tutmaktasınız. Visual Studio 2017 ile beraber gelen Cross Platform desteği ile microsoft teknolojileri daha fazla değer kazanmıştır. IOS ve Android uygulamalarını Visual Studio 2017 ile birlikte geliştirebilmektesiniz. Bu programlama dilinin yükselişini gösterirken aynı zamanda bu programlama dilini bilerek okulunuzda veya iş yaşamınızda bir adım daha öne geçeceksiniz. C# programlama dili nesne yönelimli bir dil olduğu için bu kavramlar ve nasıl uygulanacağı size ayrıntılarıyla anlatılmıştır. C# programlama dilini hem görsel hem de kodsal olarak öğrenebilmeniz tasarlanmıştır. Veri tabanı programlama ile temel veritabanı işlemlerinizi gerçekleştirebilirsiniz. REST ve SOAP web servisleri bu kitapta ayrıntılarıyla ele alınmıştır. Büyük bir uygulama geliştirmek için fazla beklemenize gerek yok. Hemen C# 7.0 programlama dilini öğrenerek büyük projeler içine girebilirsiniz.
 
 
Kitaptaki konuların ana başlıkları:
 
1. Bölüm: C# Nasıl Doğdu ve Nasıl Gelişti?.
2. Bölüm: Visual Studio İnceleme ve Tanıma
3. Bölüm: Windows Form Bileşenlerini Tanıma ve Kullanma
4. Bölüm: Temel Veri Tipleri ve Değişkenler
5. Bölüm: Operatörler, Döngüler ve Deyimler
6. Bölüm: Diziler ve String’ler
7. Bölüm: Test ve Hata Yakalama
8. Bölüm: Sınıflar, Nesneler ve Metotlar
9. Bölüm: Kalıtım
10. Bölüm: Indeksleyiciler ve Özellikler.
11. Bölüm: Interface, Structure ve Enumaration
12. Bölüm: Grafik Programlama
13. Bölüm: I/O (Input/Output) İşlemleri
14. Bölüm: Delegeler ve Olaylar
15. Bölüm: Jenerik Koleksiyonlar, StringBuilder, Regular Expression, Bellek Yönetimi
16. Bölüm: Çok Kanallı, Asenkron ve Paralel Programlama
17. Bölüm: Internet ve Ağ Uygulamaları
18. Bölüm: Veri Tabanı İşlemleri
19. Bölüm: XML ve Web Servisleri ile Çalışmak
20. Bölüm: LINQ (Language Integrated Query)
21. Bölüm: C# ile ilgili Özel Konular
22. Bölüm: C# 7 ile Gelen Yeni Özellikler
23. Bölüm: C# ile iOS ve Android Uygulamaları ve Geliştirme

 

Yayın Tarihi 2017-03-20
ISBN 6058352742
Baskı Sayısı 1. Baskı
Dil TÜRKÇE
Sayfa Sayısı 638
Cilt Tipi Karton Kapak
Kağıt Cinsi 1. Hm. Kağıt
Boyut 16.5 x 23.5 cm

 

Yazar Hakkında: 

Volkan ATASEVER, Software4Galaxy şirketinde kurucu ve Genel Müdürdür. Bilgisayar Mühendisidir. Birçok üniversitede eğitim ve seminer vermiştir. PCWorld ve T3 dergilerinde köşe yazarlığı yapmış, daha önce de üç kitap yazmıştır.



C# 7 ile gelen Tuples

clock Şubat 13, 2017 16:12 by author Volkan Atasever

Tuples kullanımı eski bir kullanım olmasına rağmen c# 7 ile yenilenerek gelmiştir. tuple type ve tuple literal bir yenilik olarak karşımıza çıkmaktadır. Tuple tipleri değer tipi değişkenlerdir. System.Tuple isim alanını kullanmaktadır. Birden fazal değer döndürmek için Tuple kullanabilirsiniz. Birden fazla parametre olsa dahi tek nesne olarak işlem görmektedir. Çoklu değer döndürmek için out paramtresi tercih etmeden değer döndürebilirsiniz.

( string, string, string, string) getKisi()

{

    //Kişi bilgilerini veritabanından veya başka bir kaynaktan okuyabilirsiniz

    string strIsim = "Volkan";

    string strAdres = "Kadıköy";

    string strSehir= "İstanbul";

     return(strIsim, strAdres, strSehir); // tuple literal

}

 

//aşağıdaki metotu çağırdınızda çoklu değerleri döndürecektir.

 var kisiBilgi= getKisi();

WriteLine("Kisi bilgi:  {kisiBilgi .Item1} {kisiBilgi .Item2} {kisiBilgi .Item3}");

 

Yukarıdaki örnekte çoklu değerleri tuple kullanarak kolayca elde edebiliyoruz. Fakat item1,item2 isimleri alakası ve kafa karıştırıcıdır. bu yüzden anlamlı isimler kullanarak aşağıdaki örneği inceleyelim.

 

(string strIsim, string strAdr, string strSe) getKisi()

{

    //kodlarınızı buraya yazıyorsunuz

}

 

//metotu belirlenmiş ismi ile çağırdığınız zaman değerler aşağıda gözükecektir

var kisiBilgi= getKisi();

WriteLine("kisi bilgi: {kisiBilgi.strIsim} {kisiBilgi.strAdr} {kisiBilgi.strSe} ");

 

Bunlara ek olarak tüm değerleri Tuple Literal olarakta döndürebilirsiniz.

return (strIsim: strIsim, strAdr: strAdres, strSe: strSehir);

Tuple Hash tablosu veya Dictionary kullanarak kolayca değiştirebileceğiniz ve döndürebileceğiniz bir sisteme sahiptir. Tek durumda birden fazla değeri depoladığınız List yerinede kullanabilirsiniz. .NET üstünde bir Tuple tip tanımlıdır. Bu referans tipi bir değişkendir. C#ile gelen değiştirilebilir değer türü Tuple ise daha performanslıdır.

Bazı zamanlarda tüm tuple paketine ulaşmadan sadece değerlerine ihtiyacınız olabilir. O zaman C# 7 ile gelen Deconstruction özelliğini kullanarak istediğiniz parçayı oradan çekip alabilirsiniz.

( string strIsim,  string strAdr,  string strSe) = getKisi();

 

Console.WriteLine($"Adres: { strAdr }, Şehir: { strSe }");



Volkan Atasever Kimdir ?

E-Mail: volkan(et)volkanatasever.com

Genel Müdür/S4G 
Bilgisayar Mühendisi

mühendislik, edebiyat, retro computer, yazılım, şiir, nümismatik, bilişim, podcast ve bir çok kategoride yazılarım...

Yazılım Kitaplarım

   

Şiir Kitaplarım

Dergi Yazılarım

 

Sosyal Ağlarım

 

 

 

 

Retro Bilgisayar Dergimiz

Türkçe Retro Bilgisayar dergimiz haziran 2016'da ilk sayısını çıkardı. ilk sayı yeni bir internet sitesinden tekrar yayınlanacaktır. Retro camiası tüm dünyada oldukça eğlenceli bir camia. Sizde katkıda bulunmak isterseniz bana mail atmanız yeterli. Dergimiz PDF formatında ve tamamen ücretsizdir.

Yasal Bilgi

Sitedeki yazıları,kodlar ve diğer materyaller Volkan Atasever'e aittir. Yazarı ve siteyi kaynak göstererek yazıları paylaşabilirsiniz.  Copyright(c)2004-2017

Sign In

Yazılım