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();

}



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 }");



C# 6.0 Kitabım Çıktı!

clock Mayıs 14, 2015 10:57 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ğini konuları bu postun altına yazabilirsiniz.

 

Kitabı sipariş vermek için SİPARİŞ LİNKİ - Kitapyurdu

Kitabı sipariş vermek için SİPARİŞ LİNKİ - Hepsiburada

Kitabı sipariş vermek için SİPARİŞ LİNKİ - D&R

 

YAYINEVİ: LEVEL KİTAP       YAZAR: VOLKAN ATASEVER  DİZİ EDİTÖRÜ: Uğur GELİŞKEN KİTAP ADI: C# 6.0 ISBN: 9786056567902 SAYFA SAYISI: 526 EBAT: 16,5*23,5 cm KÂĞIT: 1. Hamur KAPAK TASARIMI: Yunus Karaaslan DAĞITIM TARİHİ: 20.05.2015

C# 6.0 programlama dilini baştan sona size öğreten ve uygulayan bir kitabı elinizde tutmaktasınız. Visual Studio 2015 sürümünde gelen Cross Platform desteği ile Microsoft teknolojileri daha fazla değer kazanmıştır. iOS ve Android uygulamalarını Visual Studio 2015 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 hedeflenmiştir. 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# 6.0 programlama dilini öğrenerek büyük projeler içine girebilirsiniz.

 

•C# Nasıl Doğdu ve Nasıl Gelişti

• Visual Studio 2015'i İnceleme ve Tanıma

•Windows Form Bileşenlerini Tanıma

•Temel Veri Tipleri ve Değişkenler

•Operatörler, Döngüler ve Deyimler

•Diziler ve String'ler

•Test ve Hata Yakalama

•Sınıflar, Nesneler ve Metotlar

•Kalıtım

•Indeks'leyiciler ve Özellikler

•Interface, Structure ve Enumaration

•Grafik Programlama

•I/O (Input/Output) İşlemleri

•Delegeler ve Olaylar

•Jenerik Koleksiyonlar, StringBuilder, Regular Expression, Bellek Yönetimi

•Çok kanallı, Asenkron ve Paralel Programlama

•Internet ve Ağ Uygulamaları

•Veri Tabanı İşlemleri

•XML ve Web servisleri ile çalışmak

•LINQ (Language Integrated Query)

•Java ile C# arasındaki benzerlik

•TFS Kullanımı

•Mobil Programlama

•C# ile Algoritma Örnekleri

 

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: XML ve Web Servisleri ile Çalışmak

19. Bölüm: LINQ (Language Integrated Query)

20. Bölüm: Java ile C# Arasındaki Benzerlik.

21. Bölüm: C# ile iOS ve Android Uygulamaları Geliştirme

 

Yazar Hakkında: 

Volkan ATASEVER

Yazarımız, Bilgisayar Mühendisi olup Proje Yöneticisi, Eğitmen ve Danışman olarak iş hayatına devam etmektedir. Birçok üniversitede eğitim ve seminer vermiştir. PCWorld ve T3 dergilerinde köşe yazarlığı yapmış, daha önce de iki kitap yazmıştır. www.volkanatasever.com adresinden yazarı takip edebilirsiniz.



C# 6.0 ktiabım çok yakında sizlerle...

clock Mayıs 10, 2015 22:33 by author Volkan Atasever

Uzun süre üstünde çalıştığım C# 6.0 kitabı çok yakında sizlerle olacaktır. Kitapta sektörde kazandığım deneyimleri de sizlerle paylaştım.

 

 



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