Các loại không thể xóa là tốt, nhưng chỉ dành cho các loại không thể sử dụng để bắt đầu.
Để tạo một loại "nullable", hãy thêm dấu chấm hỏi vào loại, ví dụ:
int? value = 5;
Tôi cũng khuyên bạn nên sử dụng "as
"từ khóa thay vì truyền. Bạn chỉ có thể sử dụng từ khóa" as "trên các loại có thể vô hiệu, vì vậy hãy đảm bảo rằng bạn đang truyền những thứ đã có thể vô hiệu (như chuỗi) hoặc bạn sử dụng các loại có thể sử dụng như đã đề cập ở trên. Lý do cho điều này là
- Nếu một loại là giá trị rỗng, thì "
as
"từ khóa trả vềnull
nếu giá trị làDBNull
. - Nó nhanh hơn một chút so với truyền mặc dù chỉ trong một số trường hợp nhất định. Bản thân điều này không bao giờ là lý do đủ chính đáng để sử dụng
as
, nhưng cùng với lý do ở trên, nó rất hữu ích.
Tôi khuyên bạn nên làm điều gì đó như thế này
DataRow row = ds.Tables[0].Rows[0];
string value = row as string;
Trong trường hợp trên, nếu row
trở lại dưới dạng DBNull
, rồi đến giá trị value
sẽ trở thành null
thay vì ném một ngoại lệ. Lưu ý rằng nếu truy vấn DB của bạn thay đổi các cột / loại được trả về, hãy sử dụng as
sẽ khiến mã của bạn bị lỗi một cách âm thầm và làm cho các giá trị trở nên đơn giản null
thay vì ném ngoại lệ thích hợp khi dữ liệu không chính xác được trả về, vì vậy bạn nên có các thử nghiệm tại chỗ để xác thực các truy vấn của mình theo những cách khác để đảm bảo tính toàn vẹn của dữ liệu khi cơ sở mã của bạn phát triển.