Các tính năng mới của C# 6.0 (VS 2015)

10 tính năng mới của C# 6.0

1. Phương thức chỉ có một dòng code
class Employee
{
   public static int CalculateMonthlyPay(int dailyWage) => dailyWage * 30;
}
//Phương thức không cần mở/đóng ngoặc móc {}, biểu thức viết trực tiếp

2. Kiểm tra giá trị của đối tượng hoặc thuộc tính trước khi dùng

private void GetMiddleName(Employee employee)
{
   string employeeMiddleName =
      employee?.EmployeeProfile?.MiddleName ?? "N/A";
}
Thay vì phải viết theo cách cũ
private void GetMiddleName(Employee employee)
{
   string employeeMiddleName = "N/A";

   if (employee != null && employee.EmployeeProfile
      != null)
      employeeMiddleName =
         employee.EmployeeProfile.MiddleName;
}

3. Khới tạo giá trị thuộc tính tự động

class PeopleManager
{
   public List Roles { get; } = new List() { "Employee", "Managerial"};
}

4. Hàm dựng chính

Không cần phải viết construtor để khởi tạo giá trị, C# cho phép định nghĩa khi viết class

// Primary constructor
class Basket(string item, int price)
{
   // Using primary constructor parameter values
   // to do auto property initialization.
   public string Item { get; } = item;
   public int Price { get; } = price;
}

5. Sử dụng từ khóa Out ngay khi thực hiện chương trình

public bool ConvertToIntegerAndCheckForGreaterThan10(string value)
{
   if (int.TryParse(value, out int convertedValue) && convertedValue > 10)
   {
      return true;
   }
   return false;
}

Xem tiếp 5 tính năng mới trong bài tiếp theo.

Các tính năng mới của C# 6.0 (VS 2015) – tiếp theo

6. Gọi await (cơ chế bất đồng bộ) trong catch và finally để xử lý theo cơ chế bất đồng bộ

public async void Process()
{
   try
   {
      Processor processor = new Processor();
      await processor.ProccessAsync();
   }
   catch (Exception exception)
   {
      ExceptionLogger logger = new ExceptionLogger();
      // Catch operation also can be aync now!!
      await logger.HandleExceptionAsync(exception);
   }
}

7. Không cần phải sử dụng nhiều catch trong cấu trúc try … catch nữa

public async void Process()
{
   try
   {
      DataProcessor processor = ne
   }
   // Catches and handles only non sql exceptions
   catch (Exception exception) if(exception.GetType()
      != typeof(SqlException))
   {
      ExceptionLogger logger = new ExceptionLogger();
      logger.HandleException(exception);
   }
}

8. Cho phép sử dụng từ khóa using đối với static class như trong cách dùng namespace

using System;
// A static class inclusion
using System.Console;

namespace CSharp6Demo
{
   class Program
   {
      static void Main(string[] args)
      {
         WriteLine("Console. is not required as it is included in the usings!");
      }
   }
}

9. Sử dụng tên biến hoặc biểu thức trực tiếp trong chuỗi (cách sử dụng khác của String.Format)

static void Main(string[] args)
{
   string name = "Robert";
   string car = "Audi";
   WriteLine("\{name}'s favourite car is
      {car}!");
}

10. Compiler mới cho C# 6.0

Roslyn là trình biên dịch mới trong C# 6.0, nó là opensource và được cải tiến.