What is Nullable Reference Types in .NET 6

 

Như chúng ta đã biết có rất nhiều thay đổi trong .Net 6 và C # 10. Trong bài viết này, chúng ta sẽ khám phá một trong những thay đổi trong C # 10 về các thuộc tính và đối tượng viết của một lớp. Bạn có thể tìm thêm thông tin chi tiết về các tính năng mới hoặc các thay đổi trong .NET 6 trong bài viết trước Các tính năng của .NET 6.

Trong .NET 5 và các phiên bản thấp hơn, chúng ta có thể viết các thuộc tính và đối tượng của lớp như bên dưới.

 

public class People

    {

        public string Name { get; set; }

        public string Address { get; set; }

        public int Age { get; set; }

        public int Heigh { get; set; }

 

    }

Tuy nhiên, nó đã được thay đổi trong C # 10. Nếu chúng ta viết như trước đó, trình biên dịch sẽ hiển thị cảnh báo như bên dưới.

Nhưng lúc này trình soạn thảo (editor) của visual studio cứ hiện cảnh báo Null với các khai báo là string

Nhìn khác khó chịu 

Tuy nhiên đó là một cải tiến của C# 8.0.

Khi option này enable lên thì code sẽ validate giá trị đầu vào  = null 

nếu một trường của class chưa khai báo cho phép null thì code sẽ validate =  false với tham số đầu vào  = null kể cả kiểu dữ liệu string.

Trường hợp này bạn có thể thấy rõ ở các api của .net 6.0 đang chạy c# 8.0

Nếu các bạn bỏ option này thì code sẽ ko bắt giá trị null với kiểu string nữa 

 

 

Mình sẽ hướng dẫn các bạn loại bỏ thông báo ấy nhé 

 Bước 1: Truy cập vào file quản lý project ví dụ:  HandleNullable.csproj file .csproj

file này có định dạng xml và có rất nhiều khai báo khác nhau.

Bạn tìm đến khai báo : <Nullable>enable</Nullable>

comment nó đi là ok liền hì hì.

 

<Project Sdk="Microsoft.NET.Sdk">

 

  <PropertyGroup>

    <OutputType>Exe</OutputType>

    <TargetFramework>net6.0</TargetFramework>

    <ImplicitUsings>enable</ImplicitUsings>

    <!--<Nullable>enable</Nullable>-->

  </PropertyGroup>

 

 

</Project>

 

Giờ bạn chờ visual studio frefresh lại là class bạn ko còn cảnh báo null nữa nhé

Bạn có thể xem video chi tiết tại đây

(video đang cập nhật).