arşiv

Salı, 16 Ağu 2016 için arşiv

C# 6.0 Yenilikleri – Null-conditional operators

Salı, 16 Ağu 2016 yorum yok

Null-conditional operators :  Herhangi bir class veya propertyleri null ise bunlara erişmek için null kontrolü yapmadan çok daha basit yolla değerleri çekebiliriz.

int? first = (customers != null) ? customers[0].Orders.Count() : null;

Yukarıdaki kodun yerine aşağıdakini kullanabiliriz.

int? first = customers?[0].Orders?.Count();

Böylece eski compiler’dan kurtulunca artık neler yapabileceğimizi gördük. Daha birçok yeniliğin kapıda olduğunu belirtir bloğumu takip etmenizi tavsiye ederim.

Detaylı Pdf: http://www.borakasmer.com/projects/ctp3-csharp-features.pdf

Kaynak : http://www.borakasmer.com/net-compiler-platform-roslyn/

Categories: C# Tags:

C# 6.0 Yenilikleri – Exception filters

Salı, 16 Ağu 2016 yorum yok

Exception filters : Yakalanan hatalara filitre konabilmektedir. Böylece belirtilen catch bloğunda sadece tanımlanan exception filtresine uygun exceptionlar yakalanır. Eğer hiçbir filitreye uymayan exception var ise stacktrace kaybolmadan işleme devam edilir. Aşağıdaki örnekte de görüldüğü gibi number değeri 50’den küçük olduğu için en sondaki catch’e düşmekte ve 1 değerini döndürmektedir. Eğer number 50’den büyük olur ise ilk cathc’e düşmekte ve geriye number’ın kendi değeri döndürülmektedir.

public class Point(int x, int y)
{
        string number = "45";
        public int GetNumber()
        {
            try
            {
                int.TryParse(number, out var x);
                throw new Exception();
                return x;
            }
            catch (Exception e) if (int.Parse(number) > 50)
            {
                return number;
            }
            catch (Exception e2)
            {               
                return 1;
            }
        }
}

 

Categories: C# Tags:

C# 6.0 Yenilikleri – Declaration expressions

Salı, 16 Ağu 2016 yorum yok

Declaration expressions : Expressionlar içerisinde artık tanımlama yapılabilmektedir. Ençok kullanıldığı yerler out parametreleridir.

 int.TryParse(number, out var x);
public class Customer
{ 
        public char[] Strings { get { return "a12b3d".ToCharArray(); } }
        public List<int> GetResult()
        {
            var result = (from s in Strings select int.TryParse(s.ToString(), out int i) ? i : -1).ToList();
            return result;
        }
}
 Customer newCustomer = new Customer();
 foreach (int num in newCustomer.GetResult())
 {
       WriteLine(num);
 }

Kaynak: http://www.borakasmer.com/net-compiler-platform-roslyn/

Categories: C# Tags:

C# 6.0 Yenilikleri – Extension methods

Salı, 16 Ağu 2016 yorum yok

Extension methods : Extension methodlar projeye using ile eklenebilmektedir.

using System.Linq.Enumerable;
class Program
    {
        static void Main(string[] args)
        {
            var range = Range(5, 17);
            var odd = Where(range, i => i % 2 == 1);
            foreach (int num in odd)
            {
                WriteLine(num);
            }
            ReadLine();
         }
     }

 

Categories: C# Tags:

C# 6.0 Yenilikleri – Using static

Salı, 16 Ağu 2016 yorum yok

Using static : Static class’lar using olarak projeye eklenebilmektedir.

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

 

Categories: C# Tags:

C# 6.0 Yenilikleri – Parameters on classes and structs

Salı, 16 Ağu 2016 yorum yok

Parameters on classes and structs : Classlar oluşturulurken constructer olmadan parametre alması sağlanmıştır.

public class RealCustomer(string firstName, string lastName) 
{ 
   public string FirstName { get; } = firstName;
   public string LastName { get; } = lastName; 
}

RealCustomer relCustomer = new RealCustomer("Yakup", "KALEBAŞI");
WriteLine(relCustomer.FirstName + " " + relCustomer.LastName);

 

Categories: C# Tags:

C# 6.0 Yenilikleri – Auto-property enhancements

Salı, 16 Ağu 2016 yorum yok
  • Auto-property enhancements : Propertyler’e değer atanmaması durumunda default değer atanabilmektedir.

     

    public class Customer 
    { 
        public string FirstName { get; set; } = "Yakup"; 
        public string LastName { get; set; } = "KALEBAŞI"; 
    }
    
     Customer newCustomer = new Customer();
     WriteLine(newCustomer.FirstName + " " + newCustomer.LastName);

     

Categories: C# Tags: