amerika gazete haberleri haberler
Yazılım

C# 6.0 ile gelen 10 Yenilik

1 – AUTO PROPERTY

public class Customer
{
public string First { get; set; } = “Yazilim”;
public string Last { get; set; } = “Bakanligi”;
}

C# 6.0 ile birlikte oluşturduğumuz sınıflar içerisinde oluşturduğumuz propertylerimize default değerler verebiliyoruz. C# 6.0 dan önce bunu yapmak isteseydik üst satırlarda bir field’ımız olması gerekirdi ve get set ile onu kullanırdık.

public class Customer
{
public string First { get; } = “Yazilim”;
public string Last { get; } = “Bakanligi”;
}

Burada da sadece Getter only bir propertymiz var. C#6.0 öncesinde böyle bir tanımlama yapmamız mümkün değildi. Getter only property sayesinde readonly bir property yapmış oluyoruz. Bir örnek daha verelim

public class Customerpublic string Name { get; };public Customer(string first, string last){Name = first + ” ” + last;}}

Bu örneğimizde de readonly dışında bir kullanım görmüş olduk.
2 – EXPRESSION BODIED FUNCTION MEMBERS
Lambda işareti ile geneleksel metot gövdesi yerine geçecek bir ifade tanımlayabilirim.
Expression bodies on property-like function members:
public string Name => “OMER”;

Expression bodies on method-like members:
public string GetName(string name, string surname) => name + surname;
Burada yapmış olduğum aslında şu;

public string GetName(string name, string surname){return name + surname;}

3 – USING STATIC
Namespace gibi namespace altındaki static classlarımızıda ekleyebileceğiz.

using System.Console;using System.Math;class Program{static void Main(){WriteLine(Sqrt(3*3 + 4*4));}}

4 – NULL-CONDITIONAL OPERATORS
NULL kontrollerini daha pratik yapmak için;

int? length = users?.Length; <strong>// eğer users null ise null atar değil ise customers.Length’ı atar.</strong>nt length = users?.Length ?? 0; <strong>// Eğer users null ise sıfır atar değil ise .Length’i atar.</strong>

5 – STRING INTERPOLATION

var s = String.Format(“{0} is {1} year{{s}} old”, p.Name, p.Age); //<strong> Önceki Hali</strong>var s = “\{p.Name} is \{p.Age} year{s} old”; // <strong>Şu anki şekil</strong>

6 – NAMEOF EXPRESSIONS
İhtiyaç olan konulardan bir tanesiydi. Ciddi manada bizim için sorun niteliği taşıyordu. Fakat güzel bir çözüm üretilmiş.

(if x == null) throw new ArgumentNullException(“x”); //<strong> Önceki Hali</strong>(if x == null) throw new ArgumentNullException(nameof(x));// <strong>Şu anki şekil</strong>

7 – INDEX INITIALIZERS
Şaşırdığım özelliklerden bir tanesi aslına bakarsanız. Kolay bir şekilde indexlemeye yarıyor.

var nums= new Dictionary<int, string>{[1] = “one”,[3] = “tree”,[7] = “seven”};

8 – EXCEPTION FILTERS

Catch bloğu içerisinde bir if ifadesi kullanmak, biraz zahmetliydi. Bunun yerine VB ve F# tarafında kolay kullanım şekilleri mevcuttuC# 6.0 ile bu da gelmiş oldu. VB’cilere karşı artık bir adım daha avantajlıyız.

try { falan filan }catch (SqlException e) if (e.ErrorCode > 999)

9 – AWAIT IN CATCH AND FINALLY BLOCKS

C# 5.0 ile gelen ve öve öve anlattığımız async await özelliğini kullanmaya başladıkça finally ve catch bloklarında bazı engellerin olduğunu biliyorduk. Burada bizi çok beklettiğini biliyoruz. C# 6.0 ile bundan kurtulmuş olduk.

Resource resx = null;try{resx = await Resource.OpenAsync(…); //<strong> Önceki Hali</strong>}catch(ResourceException e){await Resource.LogAsync(resx, e); // <strong>Şu anki şekil</strong>}finally{if (res != null) await res.CloseAsync(); // <strong>Şu anki şekil</strong>} 

10 – PARAMETERLESS CONSTRUCTORS IN STRUCTS

C#’ın önceki versiyonlarını düşünecek olursak parametre alamayan structs kurucular tanımlayamadığımızı hatırlıyor olmalısınız. Bazı konularda bize ciddi manada zorluklar yaşatıyordu. Fakat C# 6.0 ile bunu çok basit bir şekilde yapabiliriyoruz.

struct Person { public string Name { get; } public int Age { get; } public Person(string isim, int yas)<strong>//Önceki Hali</stron>

İlgili Makaleler

Başa dön tuşu
İstanbul evden eve nakliyat izmir dijital ajans dijital pazarlama