Bài viết
Kho tài liệu và bài viết được chia sẻ, đánh giá bởi cộng đồng
Nội dung bài viết
Giới Thiệu
C# 9.0 đã ra mắt và giới thiệu một vài tính năng mới, trong đó tính năng Init only setters là một tính năng khá hữu ích được Microsoft trang bị cho C# ở phiên bản 9.0 cùng mình khám phá nhé.
Object Initializer
Trong C# khi khởi tạo một đối tượng chúng ta thường xuyên dùng đến Object initializer vì cách này khá gọn gàng, xem ví dụ bên dưới nhé.
class Program
{
static void Main(string[] args)
{
// this is Object initializer
var student = new Student() { FullName = "Kter", Age = 24 };
}
}
public class Student
{
public string FullName { get; set; }
public int Age { get; set; }
}
Nhưng đối với cách khởi tạo này ở trường hợp sau sẽ không dùng được, nếu chúng ta gán giá trị khởi tạo cho Property dạng Readonly thì không dùng cách khởi tạo này được.
Init only setters
Khi sử dụng C# 9.0 sẽ cho phép bạn khai báo các thuộc tính dạng Readonly như sau.
public class Student
{
public string FullName { get; init}
public int Age { get; set; init}
}
Như các bạn đã thấy từ khoá init đã được thay thế cho Setter và nó cũng giúp chúng ta sử dụng được Object initializer khi gán giá trị khởi tạo cho Readonly Property . Cùng xem ví dụ bên dưới nhé.
class Program
{
static void Main(string[] args)
{
// this is Object initializer
var student = new Student() { FullName = "Kter", Age = 24 };
}
}
public class Student
{
public string FullName { get; init}
public int Age { get; set; init}
}
Lưu ý, nếu chúng ta đã khai báo cho Setter của Property là dạng Init thì chúng ta sẽ không gán lại giá trị cho Property này được nữa.
class Program
{
static void Main(string[] args)
{
// this is Object initializer
var student = new Student() { FullName = "Kter", Age = 24 };
student.FullName = "Kter Lỏd"; // Error! CS8852.
}
}
public class Student
{
public string FullName { get; init}
public int Age { get; set; init}
}
Nội dung bài viết