01/10/2018, 17:26

Truyền giá trị null cho các kiểu dữ liệu trong C#

Góc Kinh Nghiệm sẽ trình bày cách để thiết lập một giá trị null cho một kiểu dữ liệu bất kỳ trong C#. Để làm được điều đó thì cần khai báo biến kiểu dữ liệu ở dạng cho phép thiết lập giá trị null. Cú phát như sau: DateTime? _datetime = null; int? _int = 0; Theo sau kiểu dữ liệu là dấu ?, có ...

Góc Kinh Nghiệm sẽ trình bày cách để thiết lập một giá trị null cho một kiểu dữ liệu bất kỳ trong C#. Để làm được điều đó thì cần khai báo biến kiểu dữ liệu ở dạng cho phép thiết lập giá trị null. Cú phát như sau:

DateTime? _datetime = null;
int? _int = 0;

Theo sau kiểu dữ liệu là dấu ?, có nghĩa là cho phép dữ liệu đó được phép null.

Ép kiểu sang kiểu null như sau:

_datetime = (DateTime?)null;
_bool = (bool?)null;

Tương tự cho các kiểu dữ liệu còn lại.

Tùy theo cách bạn viết code mà có thể sử dụng ép kiểu hoặc không ép kiểu (thiết lập trực tiếp như _int = null;)

Ví dụ minh họa, Góc Kinh Nghiệm sử dụng VS2005 cho ví dụ này:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; 

namespace MyProject
{
   public partial class FormSetNullValue : Form
   {
      public FormSetNullValue()
      {
         InitializeComponent();
         btnCheck.Click += new EventHandler(btnCheck_Click);
      }

      void btnCheck_Click(object sender, EventArgs e)
      {
         int? _int = 0;
         float? _float = 0;
         decimal? _decimal = 0;
         bool? _bool = false;
         short? _short = 0;
         long? _long = 0;
         double? _double = 0;
         DateTime? _datetime = null;

         // Nếu ô "nul cho kiểu in" được check thì biến _int được thiết lập giá trị là null
         // Ngược lại được thiết lập = 1
         if (chbSetIntNull.Checked)
            _int = null;
         else
            _int = 1;

         // Tương tự cho kiểu float
         // Cách viết khác của biểu thức điều kiện
         _float = chbSetFloatNull.Checked ? (float?)null : 1;

          // decimal
         _decimal = chbSetDecimalNull.Checked == true ? (decimal?)null : 1;

         // bool
         _bool = chbSetBoolNull.Checked == true ? (bool?)null : true;

         // short
         _short = chbSetShortNull.Checked ? (short?)null : 1;

         // long
         _long = chbSetLongNull.Checked ? (long?)null : 1;

         // double
         _double = chbSetDoubleNull.Checked ? (double?)null : 1;

         // datetime
         _datetime = chbSetDateTimeNull.Checked ? (DateTime?)null : DateTime.Now;

         // Kiểm tra & xuất ra thông báo
         string nullValues = "1. Những kiểu dữ liệu có giá trị null:" + Environment.NewLine;
         string notNullValues = "2. Những kiểu dữ liệu có giá trị khác null:" + Environment.NewLine;

         // int
         if (_int == null)
            nullValues += "	 - int" + Environment.NewLine;
         else
            notNullValues += "	 - int" + Environment.NewLine;

         // float
         if (_float == null)
            nullValues += "	 - float" + Environment.NewLine;
         else
            notNullValues += "	 - float" + Environment.NewLine;

         // decimal
         if (_decimal == null)
            nullValues += "	 - decimal" + Environment.NewLine;
         else
            notNullValues += "	 - decimal" + Environment.NewLine;

         // bool
         if (_bool == null)
            nullValues += "	 - bool" + Environment.NewLine;
         else
            notNullValues += "	 - bool" + Environment.NewLine;

         // short
         if (_short == null)
            nullValues += "	 - short" + Environment.NewLine;
         else
            notNullValues += "	 - short" + Environment.NewLine;

         // long
         if (_long == null)
            nullValues += "	 - long" + Environment.NewLine;
         else
            notNullValues += "	 - long" + Environment.NewLine;

         // double
         if (_double == null)
            nullValues += "	 - double" + Environment.NewLine;
         else
            notNullValues += "	 - double" + Environment.NewLine;

         // datetime
         if (_datetime == null)
            nullValues += "	 - datetime" + Environment.NewLine;
         else
            notNullValues += "	 - datetime" + Environment.NewLine;

          MessageBox.Show(nullValues + notNullValues, "www.gockinhnghiem.com");
      }
   }
}

Giải thích:

  • Environment.NewLine: xuống dòng
  • “ ”: là thục vào dầu dòng (chính là phím tab)

Chạy chương trình, được kết quả như hình bên dưới:

Sau khi nhấn nút “Kiểm tra”, được kết quả như hình bên dưới:

Góc kinh nghiệm chúc các bạn thành công!  :roll:


0