.Net Core 3.0 ve Yenilikleri

Selamlar,

Bu makalede, .Net Core 3.0.100-preview-009812 versiyonu ile incelediğim yeni özellikleri sizlerle paylaşmak istiyorum.

Öncelikle .Net Core 3.0’ı https://dotnet.microsoft.com/download/dotnet-core/3.0 adresinden indirebilirsiniz.

dotnet –version” komutu çalıştırıldığında aşağıdaki gibi bir sonuç ile karşılaşılır.

Not: Sonrasında çalışmalarınızda bir sorun çıkmaması amacı ile yükleme işlemini çalıştığınız ortama değil de, yeni bir VM açıp ona yapmanızı tavsiye ederim.

.Net Core 3.0 ile gelen tüm templateler, aşağıda görüldüğü gibi “dotnet new –help” komutu ile listelenir.

Yeni templatelerden, benim ençok dikkatimi çeken 2 tanesi şunlardır.

  • WPF Application
  • Windows Forms Application

Önce erişimi olan .Net Framework 4.8 aşağıdaki linkden yüklenir. Böylece C# 8.0 ile gelen yenilikler incelenecektir.

https://blogs.msdn.microsoft.com/dotnet/2018/11/28/announcing-net-framework-4-8-early-access-build-3694/

.Net Core 3.0 Üzerinde Windows Application:

Aşağıdaki komut ile .Net Core Windows Application yaratılır.

Not: “.csproj” uzantılı core3.csproj dosyasına “<LangVersion>8.0</LangVersion>” satırı eklenerek, c#8.0 ile gelen yenilikler, kolaylıkla kullanılabilir.

Ranges and indices :

Windows Forms üstüne, Dizileri Test Et adında bir button konur.

  • Index i1 değişkeni, dizideki başlangıçtan 2. elemanı alır. ==> a[i1] 2’dir.
  • Index i2 ^’den dolayı, sondan 5. elemanı alır. ==> a[i2] 5’dir.
  • a[i1..i2] aralığında, dizi içerisindeki tüm elemanlar alınır. ==> 2,3,4

Asynchronous Streams:

Amaç, asenkron bir method içinde foreach ile gezinmek olarak düşünülebilir.

GetUserAsync(): GitHub’dan, kullanıcı bilgilerini asenkron olarak çeken aşağıdaki method yazılır.

WriteResultsAsync(): Bu methodda, GetUserAsync()’den asenkron dönen string[] dizisi ekrana, “await foreach” şeklinde yazdırılır.

Not: Bu kodu, .Net Core 3.0 üzerinde 4 saat çalıştırmayı denemem üzerine aşağıdaki not ile karşılaştım. “.Net Core 3.0 için bir bug bulunmaktadır. Şu an için sadece C# 8.0’da çalıştığı belirtilmektedir.” Ama yakın bir zamanda .Net Core 3.0’a da gelecektir. Tam test edilemediği için, gerekir ise kodla ilgili düzenleme yapılacaktır!

Cryptography:

Şifreleme algoritmaları olan AES GCM ve AES-CCM Net Core 3.0’a eklenmiştir.

İlgili kütüphaneler ==> System.Security.Cryptography.AesGcm ve System.Security.Cryptography.AesCcm

Aşağıdaki örnek, “blogs.msdn.microsoft.com adresinden” biraz değiştirilerek alınmıştır. İlk bakıldığında, AES GCM kullanılmış olsa da, AES-CCM‘nin kodları bunun aynısıdır.

Default implementations of interface members :

Not: Henüz C#8.0 ve .Net Core 3.0’da dahi desteklenmemektedir. Microsoft Visual Studio Enterprise 2019 Preview 2.0 ile test edilmiştir.

Sıra geldi en heycanlandığım yeniliğe. C# 8.0′, ve.Net Core 3’a gelecek olan, Interface’e default method atama özelliği aşağıdaki gibidir: Syntax’ı şimdilik bu şekilde gözükse de, final versiyonunda bir farklılık olabilir.

  • IMessage interface’i, “WriteMessage()” methodunu ve bir de default tanımlı “WriteMessageMultiTimes()” methodu ilgili interface de tanımlıdır.
  • MessageNote : IMessage interface’inden türemiş ve WriteMessageMultiTimes() methodunu implemente etmemiş olmasına rağmen, bir hata ile karşılaşılmamıştır. Çünkü bu method, IMessage interface’inde default olarak tanımlanmıştır.

Peki bunun avantajı nedir? Örneğin aşağıdaki interface, farklı 3 method tarafından implemente edilsin. Aşağıda görüldüğü gibi IFighter interface’i, 4 method içermektedir.

Şimdi bu Interfaceden türeyen 3 sınıf olsun:

Şimdi diyelim ki ihtiyaca göre, IFighterBuilder interface’ine yeni bir method eklemek zorunda kalalım. “SetSpecialMove()” Bu interface’i kullanan tüm classların değiştirilmemesi için “SetSpecialMove()” methodu, default bir method olarak Interface bünyesinde tanımlanır. Böylece projenin tamamında yapılması gereken, “Code Refactoring” işleminden kurtulunmuş olunur.

Geldik bir makalenin daha sonuna. Bu makalede .Net Core 3.0 ve C# 8.0 gelicek bazı özellikleri, beraberce inceledik. Sanırım bu yenilikler ile oynun kuralları artık biraz değişecek.

Yeni bir makalede görüşmek üzere hepinize hoşçakalın.

Source :

Herkes Görsün:

Bunlar da hoşunuza gidebilir...

12 Cevaplar

  1. Tagi dedi ki:

    Çok faydalı oldu. Güzel yenilikler var
    Teşekkürler.

  2. OSMAN ESER dedi ki:

    Bora Abi merhaba, kalemine sağlık güzel bir yazı olmuş. Benim sana ionic ve angular ile ilgili sormak istediğim birkaç şey vardı. E posta atmıştım ama sanırım görmedin. Müsait olursan eğer sana birkaç soru sormak istiyorum.

  3. Umut dedi ki:

    Linux ve türevleri için Windows Desktop veya WPF desteklenecek mi acaba?

  4. Hasan Şahin dedi ki:

    Hocam merhabalar, .Net core ile ilgili sürekli hata alıyordum örneğin 2.1 sürümünde proje açıp controller oluşturmaya çalışınca runtime sürümü dessteklemiyor tarzında hata alıyordum şimdi 3.0 kurup deneyim dedim şuan bütün sürümlerde açılışta microsoft.net.sdk.web not found hatası alıyorum.

  5. Murat dedi ki:

    Microsoft’ un sitesinden daha iyi anlatılmış. :)

  6. metin dedi ki:

    “SetFlyPunch()” methodu, default bir method olarak Interface bünyesinde tanımlanır.

    (SetSpecialMove() demek istediniz sanırım?)

Bir cevap yazın

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