Visual Studio 2015 và C# 6

*( Lưu ý: bấm vào hình để xem rõ hơn)

Update: Thông tin tác giả:

Tên: Hoàng Đức Huy
SDT: 01207526940
Địa chỉ thư: Đào Thị Xuyến, phòng Giám sát hoạt động, Vietcombank, 198 Trần Quang Khải, Hà Nội

Visual Studio 2015 được ra mắt hồi tháng 7/2015 vừa qua. Trong phiên bản mới này, Microsoft đã trang bị thêm cho bộ IDE rất nhiều công cụ và tính năng mới. Một trong những điểm mới của VS2015 là việc đi kèm theo .NET Framework 4.6 và C# 6. Trong blog này, chúng ta điểm qua những điểm mới nổi bật của C# phiên bản 6.0 và hỗ trợ lập trình từ Visual Studio 2015.

Về C# 6.0

Phiên bản 6.0 bổ sung thêm rất nhiều tính năng cho C# nhằm giúp code của bạn trở nên gọn  gàng , dễ viết và dễ hiểu hơn.  Để sử dụng C#6, bạn click chuột phải vào Project trong Solution Explorer rồi chọn Properties>Build>Advanced> chọn C# 6.0 ở mục Language version. Sau đây là một vài tính năng nổi bật nhất.

1. Trả về giá trị ngay khi khai báo hàm. Đối với những hàm trả về những giá trị đơn giản hoặc có thể rút gọn chỉ trong 1 câu lệnh, C# cho phép bạn trả về ngay lập tức khi khai báo:

public class Calculator{
   public static double Multiply(double a, double b) => a*b;
}

2. using static . cú pháp mới của using cho phép bạn “using” một class. Thay vì viết Console.WriteLine() thì bạn hoàn toàn có thể làm như sau:

using static System.Console;
class Program
{
    static void Main(string[] args){
        WriteLine("No class symbol needed");
    }
}

3. Truy cập biến có điều kiện != null. Chắc ai trong số chúng ta cũng từng viết những đoạn code dạng

if(person!=null)
{
    string name = person.Name;
    int age = person.Age;
}

C#6 cho phép bạn dùng toán tử ‘?’ để kiểm tra biến trước khi truy cập:

    string name = person?.Name;
    int? age = person?.Age;

Trong đoạn code trên nếu person==null, biến nameage sẽ được trả về null. Bạn cũng có thể dùng các toán tử ‘?’ liên tiếp nhau:

string[] nameTokens = person?.Name?.Split(' ');

4. Khởi tạo biến khi khai báo. Với cú pháp sau: 

public class Person
{
    public string Name{get;set;} = "Default";
    public string CitizenNumber{get;} = "ABCD-1234";
}

Cú pháp này cho phép bạn khởi tạo biến mà không cần phải dùng đến constructor. Bạn cũng có thể khởi tạo những biến chỉ đọc(read-only) mà không cần dùng đến cú pháp private set hoặc dùng biến private đi kèm.

5. Async/await trong vòng catch/finally

Đây là một trong những điểm được các lập trình viên yêu cầu nhiều nhất và Microsoft đã mang nó lên C# 6. Giờ đây bạn có thể viết các đoạn code asynchronous (async/await) trong cả vòng catch/finally như sau:

try
{
    await Task.Delay(1000);
    throw new Exception("Dummy error");
}
catch(Exception ex)
{
    await Task.Delay(1000);
    WriteLine($"Caught exception {ex.Message} after 1 second");
}
finally
{
    await Task.Delay(1000);
    WriteLine("Finally waited 1 more second");
}

6. Cú pháp mới cho việc định dạng string. Bạn có nhận ra điểm gì mới từ đoạn code phía trên không? Nếu để ý kĩ bạn sẽ thấy rằng giờ chúng ta có thể định dạng (format) một string bằng việc thêm dấu ‘$’ đằng trước, và sử dụng biến trực tiếp trong ngoặc nhọn. Cú pháp này rõ ràng là dễ hiểu và dễ viết hơn nhiều so với việc cộng dồn nhiều string lại với nhau hay dùng String.Format() :

WriteLine("I am {me.Name} and I am {me.Age} years old");

Một điểm cộng nữa cho tính năng này đó là khi viết các biến trong dấu ngoặc nhọn (‘{}’), bạn sẽ có đầy đủ các tính năng gợi ý code (Intellisense) như khi viết C# thông thường.

7. Bộ lọc Exception. Bạn có thể lựa chọn việc chặn một exception nào đó dựa theo điều kiện:

try
{
    throw new Exception("Catch this");
}
catch (Exception ex) when (ex.Message == "Don't catch this")
{
// exception se khong duoc chan o day
}
catch (Exception ex) when (ex.Message == "Catch this")
{
    WriteLine("Exception caught");
}

Những tính năng mới của Visual Studio 2015

VS2015 đi kèm rất nhiều tính năng mới nhằm hỗ trợ việc viết code cho C#. Một số tính năng bao gồm:

  • Tự động phát hiện và loại bỏ những câu lệnh “using” không cần thiết
  • Tự động đơn giản hóa dòng code. Ví dụ như VS2015 sẽ giúp bạn chuyển System.Console.Write() thành Console.Write() nếu như bạn đã sử dụng cú pháp “using System
  • Truy cập nhanh phần khai báo của class, interface… Nếu bạn click chuột phải vào tên một biểu tượng( class, iterface, biến )… nào đó và chọn Peek Definition, bạn sẽ thấy một vùng nhỏ hiện lên cho bạn thấy nơi mà biểu tượng đó được khai báo. Hoạt động tốt với C#/XAML/Typescript

Cùng với đó là rất nhiều các tính năng mới cho việc debug. Ví dụ như bạn có thể viết một dòng lệnh lambda cụ thể vào cửa sổ Immediate Window để xem thông tin:

lambda_debugging

Ngoài ra bạn có thể trực tiếp sửa code khi đang trong quá trình debug, trong hình dưới đây hai dòng code mới đã được thêm vào, và VS sẽ tự động chạy qua phần code đã sửa đó.

live_debugiing

Cũng từ hình trên, bạn có thể thấy là VS sẽ thông tin cho bạn về khoảng thời gian mà câu lệnh trước hoạt động. Click vào dòng đó sẽ đưa bạn tới cửa sổ Diagnostic Tool, cung cấp nhiều thông tin cụ thể về CPU, RAM, thời gian biểu… Điều này rất hữu ích khi bạn muốn tối ưu hóa hiệu năng cho phần mềm của mình.

Giới thiệu qua về Roslyn- The .Net Compiler Platform

Roslyn là bộ biên dịch mã (compiler) mới của .NET, được sử dụng trong Visual Studio 2015 và mang đến rất nhiều tính năng tuyệt vời mà chúng ta đã thấy ở trên . Microsoft xây dựng Roslyn không chỉ như một bộ dịch mã mà còn như một nền tảng để những nhà phát triển phần mềm có thể tận dụng. Với Roslyn, nhà sản xuất các thư viện phần mềm có khả năng thêm vào các tính năng phân tích code, gợi ý cách sử dụng cho lập trình viên, đưa ra cảnh báo… nhằm đẩy nhanh quá trình phát triển và mang lại tính tái sử dụng cao. Hình minh họa dưới đây là một ví dụ:

roslyn

Trong hình trên, Visual Studio sử dụng một bộ phân tích code khác với mặc định và được xây dựng dựa trên Roslyn. Vì một lý do nào đó mà bộ phân tích này sẽ đưa ra cảnh báo cho người sử dụng nếu tên class không được viết bằng chữ in hoa. Bộ phân tích cũng có khả năng gợi ý và tự động chuyển đổi Code của lập trình viên nhằm giúp việc sử dụng được đúng quy cách.

Roslyn là dự án mã nguồn mở. Bạn có thể tìm thấy Roslyn trên Github

1 bình luận về “Visual Studio 2015 và C# 6

Bình luận về bài viết này