Em chào mọi người.
Em đang đi thực tập , hôm nay được cho xem 1 dự án cũ của công ty. Trong một class có 2 thuộc tính; mà kiểu dữ liệu có dấu ? ở đằng sau:
int?
DateTime?
Em không hiểu lắm, mà gg thì không ra. Mong mọi người giải thích giúp em với ạ.
Em xin chân thành cảm ơn.
Int? nghĩa là gì?
Dấu hỏi đằng sau các kiểu dữ liệu dạng struct, enum, ví dụ:
int?
double?
DateTime?
bool?
...
Là biểu thị những biến, property có thêm giá trị null.
Mặc định các kiểu dữ liệu này không thể là null. Nhưng nhiều trường hợp vẫn cần phải có giá trị null.
4 Likes
Các kiểu dữ liệu nguyên thủy và cấu trúc (struct) trong C# là kiểu không rỗng (not null). Tức là khi khai báo mà không gán giá trị thì nó sẽ được tự gán giá trị mặc định (thường là các giá trị bằng 0
).
Kiểu dữ liệu này nếu muốn gán giá trị rỗng (null) thì thêm dấu hỏi chấm (?
) vào sao nó.
int x = null; // lỗi
// ----
int? x = null; // ổn
3 Likes
int? tức là Nullable<int>
, tức là dùng cái này thì ngay cả valuetype cũng có thể gán null được.
Nhưng chú ý, Nullable<> vẫn là struct chứ không phải class nha. Gán bằng null được là nhờ black magic của Dotnet.
3 Likes
dạ em cảm ơn ạ