20/07/2019, 09:51

[C#] Làm việc với NULL sử dụng toán tử ?? và ? trong lập trình winform

Xin chào các bạn, bài viết hôm nay mình sẽ tiếp tục hướng dẫn các bạn hai toán tử ?? và ? trong lập trình C# winform. I. Giới thiệu về toán tử ?? trong C# Winform Với toán tử ?? này sẽ giúp các bạn viết code được gọn gàng và sạch sẽ hơn. Toán tử ?? ...

Xin chào các bạn, bài viết hôm nay mình sẽ tiếp tục hướng dẫn các bạn hai toán tử ?? và ? trong lập trình C# winform.

null_csharp

I. Giới thiệu về toán tử ?? trong C# Winform

Với toán tử ?? này sẽ giúp các bạn viết code được gọn gàng và sạch sẽ hơn.

Toán tử ?? có 2 toán hạng và có thể được sử dụng như biểu thức bên dưới:

x = y  ??  z;

Toán tử ?? trả về toán hạng trên trái nếu toán hạng bên trái có giá trị khác null, ngược lại sẽ trả về toán hạng bên phải. Ở ví dụ trên, nếu y khác null, thì x = y; ngược lại, nếu y có giá trị null thì x = z

Ví dụ trên tương đương với biểu thức như sau:

if (y != null)
{
   x = y;
}
else
{
   x = z;
}

Hoặc

x = (y != null)? y : z;

Bạn thấy đấy, dùng toán tử ?? vẫn chiếm ưu thế hơn. Code chúng ta vô cùng sạch sẽ, gọn đẹp, dễ nhìn. Và quan trọng nhất là nó giúp chúng ta trở nên chuyên nghiệp hơn.

Giờ Góc Kinh Nghiệm sẽ ứng dụng toán tử ?? vào một ví dụ bằng C# cụ thể nhé.

Giả sử, có một TextBox tên txtGender dùng để nhập vào giới tính. Và một Button tên btnClick. Nhập dữ liệu vào ô giới tính, sau đó nhấn vào nút btnClick để xuất ra thông báo

public partial class FormMain : Form
{
	public FormMain()
	{
	    InitializeComponent();
	}

	private void btnClick_Click(object sender, EventArgs e)
	{
	    // Lấy giá trị từ TextBox giới tính có tên là txtGender
	    string strGender = txtGender.Text.Trim();
	    if (strGender == "")
	        strGender = null;

	    // Nếu giới tính nhập vào:
	    // Khác null thì xuất ra thông báo giới tính vừa nhập;
	    // Ngược lại, xuất ra thông báo "Giới tính chưa xác định";
	 	// Chúng ta dùng toán tử ??    

	    string message = strGender ?? "Giới tính chưa xác định";
	    MessageBox.Show(message);
	}
}

II. Giới thiệu toán tử ? trong lập trình C#

Trong lập trình C#, dấu chấm hỏi ? được thêm sau kiểu biến có ý nghĩa gì.

Đối với các kiểu dữ liệu không có giá trị null thì khi chúng ta khai báo như bên dưới đây là sẽ lỗi.

Kiểu dữ liệu Boolean chỉ có hai giá trị: true và false

Kiểu dữ liệu int bao gồm các số tự nhiên.

Và nếu chúng ta khai báo như dưới đây, chương trình sẽ báo lỗi cho chúng ta:

int a = null;  
bool b = null;  

Hoặc

public int GetNull()  
{  
    return null;  
}  

Hoặc khai báo hàm như sau: 

public static void XuLy(int a, int b)  
{ }  

Nhưng lúc truyền biến vào hàm là giá trị null:

XuLy(1, null);  

Sử dụng dấu hỏi ? ngay sau kiểu dữ liệu ta được 1 kiểu dữ liệu mới. Miền giá trị bao gồm miền giá trị của kiểu dữ liệu cũ và thêm giá trị null nữa.

Và chúng ta khai báo như sau sẽ không còn báo lỗi nữa:

int? a = null;  
bool? b = null;

Hoặc

public int? GetNull()  
{  
    return null;  
}  
public static void XuLy(int a, int? b)  
{ } 

Chú ý:
 - Chỉ có thể gán kiểu dữ liệu not null cho kiểu dữ liệu có thể null chứ ngược lại thì không.
 - Ví dụ có thể gán: 

int a = 5;  
int? b = a;  
int? a = 5;  
int b = a; 

Hoặc không thể

public int Test()  
{  
    return GetNull();  
}  
public int? GetNull()  
{  
    return null;  
}  

Thanks for watching!

Bài viết được tham khảo bởi gockinhnghiem và hanhtranglaptrinh.com

Tags: biến giá trị null c#toán tử ?? c#null c#
0