Những tính năng mới trong C# 6.0
C# 6.0 mang đến những tính năng mạnh mẽ sẽ giúp cho việc codeing trở lên dễ dàng hơn đồng thời những dòng code của bạn sẽ dễ dàng có thể đọc hiểu. Bài này chúng ta cùng tìm hiểu về các tính năng mới trong C# 6.0 của Microsoft nhé.
Khởi tạo giá trị cho Properties
Trong các phiên bản trước của C# nếu chúng ta muốn khởi tạo các giá trị cho các thuộc tính của class thì phải tạo constructor sau đó mới khởi tạo các giá trị của thuộc tính trong constructor. Ví dụ:
public class Vehicle
{
public string Name { get; set; }
public int NumberOfDoors { get; set; }
public int NumberOfSeats { get; set; }
public Vehicle()
{
NumberOfDoors = 4;
NumberOfSeats = 6;
}
}
Nhưng với phiên bản mới của C# 6.0, chúng ta có thể khởi tạo các thuộc tính trực tiếp mà không cần phải thêm constructor mặc định nữa. Đây là đoạn code trên trong C# 6.0:
public class Vehicle
{
public string Name { get; set; }
public int NumberOfDoors { get; set; } = 4;
public int NumberOfSeats { get; set; } = 6;
}
ReadOnly Properies
Với C# 6.0 chúng ta có thể định nghĩa một thuộc tính read-only bằng cách bỏ đi từ khóa set. Đây là ví dụ:
public class Vehicle
{
public string Name { get; set; }
public int NumberOfDoors { get; set; } = 4;
public int NumberOfSeats { get; set; } = 6;
public int NumberOfTires { get; } = 4;
}
Chú ý rằng thuộc tính NumberOfTires được khởi tạo trực tiếp với giá trị là 4.
Khởi tạo Dictionary
Để khởi tạo một Dictionary<Tkey,Tvalue> với các đối tượng khác nhau chúng ta thường sử dụng phương thức generic Add(). Với phiên bản hiện tại của C# chúng ta có thể dùng index để chỉ ra key và gán cho nó một đối tượng đây là ví dụ:
Dictionary<string, Vehicle> vehicles = new Dictionary<string, Vehicle>()
{
["BMW"] = new Vehicle {
Name = "BMW",
NumberOfDoors = "4",
NumberOfSeats = 6 },
["Mercedes"] = new Vehicle {
Name = "Mercedes",
NumberOfDoors = "2",
NumberOfSeats = 4 },
};
Expression Bodied Members
Một phương thức chứa một biểu thức đơn bây giờ có thể được viết dễ dàng hơn trong một biểu thức thân hàm như sau:
// C# 5.0
int MyMethod(int x) { return x + 1; }
// C# 6.0
int MyMethod(int x) = > return x + 1;
Chúng ta cũng có thể khai báo một thuộc tính read-only dễ dàng hơn với một thuộc tính sử dụng cách khai báo biểu thức thân hàm:
public decimal NetPrice => MarkedPrice + TaxAmount;
Mũi tên biểu thức lamda thay thế tất cả ngoặc và return.
Using Static
C# 6.0 cho phép chúng ta import không chỉ namspace mà còn có thể import cả static class. Tất cả các thành phần static đều có thể được dùng mà không cần viết đủ cả tên class. Ví dụ:
using static System.Console;
class Logger
{
static void info(string message) { WriteLine(message); }
}
Toán tử điều kiện Null
Toán tử điều kiện Null(?) cho phép chúng ta gọi và truy cập đến các member giống cách thông thường thông qua dấu chấm (.) ngoại trừ trường hợp kiểu nullable. Biểu thức sẽ kiểm tra giá trị null và ngăn chặn các lệnh truy cập giá trị:
// C# 5.0
var customer = Customers.GetCustomer(id: 1);
var name = nul;
var address = null;
if (customer.Name != null)
{
name = customer.Name;
address = customer.getAddress();
}
// C# 6.0
var customer = Customers.GetCustomer(id: 1);
var name = customer?.Name
var address = customer?.getAddress();
String interpolation
Xây dựng chuỗi bằng cách sử dụng ký tự “$”. Chúng ta có thể đặt biểu thức trực tiếp vào giữa hai dấu ngoặc trong chuỗi để hiển thị giá trị cần thay thế:
string VehicleName = "BMW";
int NumberOfDoors = 4;
int NumberOfSeats = 6;
// C# 5.0
Console.Write(string.Format("the vehicle {0} has {1} doors and {2} seats",
VehicleName, NumberOfDoors, NumberOfSeats);
// C# 6.0
Console.Write($"the vehicle {VehicleName} has {NumberOfDoors} doors and {NumberOfSeats} seats");
Toán tử nameof
Toán tử nameof trong C# 6.0 trả về tên của bất kỳ cái gì dưới dạng string. Nameof() được xử lý ngay lúc biên dịch. Toán tử này có thể được sử dụng để kiểm tra sự tồn tại của một số thành phần với tên của chúng.
if (myObject == null) throw new ArgumentNullException("myObject");
var city = "City";
chuyển sang:
if (myObject == null) throw new ArgumentNullException(nameof(myObject));
var city = nameof(customer.Address.City);
Exception filters
Exception filters trong C# 6.0 được sử dụng để catch chỉ các ngoại lệ theo điều kiện nào đó. Cú pháp như sau:
try
{
}
catch (Exception ex) when (SomeFilter(ex))
{
}
Nếu điều kiện là đúng, ngoại lệ sẽ xảy ra ngược lại thì sẽ không chạy vào ngoại lệ này.
Await trong khối catch và finally
Từ khóa await trong C# 6.0 được gọi bên trong khối lệnh catch và finally. Hiện tại chúng ta có thể code như sau:
Resourse resource = null;
try
{
resource = processor.ProccessAsync();
}
catch (Exception exception)
{
await Logger.LogAsync(res, exception)
}
finally
{
if (resource != null) await res.CloseAsync();
}
Trích nguồn từ: http://www.c-sharpcorner.com/
Bài viết liên quan
Có gì mới trong .NET 10?
.NET 10 tập trung vào hiệu suất, tối ưu hóa JIT, cải thiện JSON, Blazor, MAUI, EF Core, và nâng cấp C# 14 với nhiều tính năng giúp code linh hoạt hơn.
Đọc thêm
Ra mắt khóa học AWS for Beginners
Khóa học này là nền tảng để các bạn tiếp cận và làm quen với một trong 3 cloud provider hàng đầu thế giới là AWS, Azure và Google Cloud.
Đọc thêm
Ra mắt khóa học Design Patterns in a nutshell
Tác giả khóa học là anh Thành Lê, một Software Architect đang sinh sống và làm việc tại Mỹ. Khóa học không chỉ giúp các bạn hiểu Design Patterns mà còn giúp nâng cao kỹ năng giải quyêt vấn đề.
Đọc thêm
Ra mắt khóa học: Xây dựng ứng dụng mạng xã hội với Flutter
Nhằm đáp ứng nhu cầu học lập trình ứng dụng Mobile cho tất cả mọi người, TEDU ra mắt khóa học Lập trình ứng dụng mạng xã hội cơ bản sử dụng .NET Core và Flutter của tác giả Nguyễn Hoài Nam
Đọc thêm
TEDU ra mắt khóa học Xây dựng hệ thống với kiến trúc Micro-services
Ra mắt khóa học xây dựng hệ thống với kiến trúc Micro-services sử dụng .NET 6, RabbitMQ, Docker dành cho mọi người, có chính sách ưu đãi mua sớm cho 100 người đầu tiên.
Đọc thêmCác bước nâng cấp ứng dụng từ .NET 5.0 lên .NET 6.0
Hướng dẫn cách nâng cấp ứng dụng .NET 5 lên .NET 6.0 một cách dễ dàng.
Đọc thêm
Microsoft ra mắt .NET 6.0 ngày 9/11/2021, chúng ta cùng điểm qua xem có gì mới?
Đúng như lộ trình phát triển, Microsoft đã tung ra bản .NET 6.0 Long Term Support (LTS) được mong chờ từ lâu. Chúng ta hãy cùng xem có gì trong bản release mới nhất này nhé.
Đọc thêm
.NET Core 3.0 (Preview 2) có gì mới?
Gần đây Microsoft cho ra mắt .NET Core 3 Preview 2. Nó bao gồm các tính năng mới cho .NET Core 3.0 và C# 8, nó cũng bao gồm luôn các tính năng mới trong Preview 1 và Preview 2
Đọc thêm
Đầu xuân mở lộc TEDU lì xì 30% các khóa học
Năm Kỷ Hợi bắt đầu một niềm tin mới, TEDU xin gửi tới các bạn một quà tặng lì xì đầu năm trị giá 30% khi tham gia các khóa học tại TEDU.
Đọc thêm
Chào đón năm 2019, TEDU sales lớn nhất năm đến 60% và ra mắt khóa học mới
Nhân dịp mừng giáng sinh và đón chào năm mới 2019, TEDU xin gửi tới toàn thể các bạn đã đang và sẽ là thành viên của cộng đồng TEDU chương trình khuyến mãi lớn nhất trong năm lên đến 60% tất cả các khóa học.
Đọc thêm